ЦВЕТОВОЙ фильтр в операторах CASE

#mysql

Вопрос:

Моя примерная таблица выглядит следующим образом:

Имя Продажи Задачи
Шон 10 0
Марта 20000 15
Стюарт 0 5
Анджела 0 0

Я пытаюсь добавить цветовой фильтр в свои инструкции case для лучшей идентификации строк

Я хочу, чтобы первые 3 строки были синими, так как они имеют некоторое значение в полях «продажи» и «задачи». В то время как для Анджелы я хочу, чтобы строка была белого цвета.

 CASE WHEN `Sales` IS NOT NULL AND `Tasks` IS NOT NULL
THEN '#B7DAF5' (light blue)
ELSE '#FFFFFF' (white)
END
 

Он по-прежнему показывает каждую строку белым цветом.

Ответ №1:

0 это не то же NULL самое, что . Кроме того, ваше условие обратное, оно только сделает его светло-голубым, ВСЕ поля не являются нулевыми; следовательно, Shawn и Stewart будут белыми.

Упростите его, используя положительное условие, а не отрицательное.

 CASE WHEN `Sales` = 0 AND `Tasks` = 0
THEN '#FFFFFF' -- white
ELSE '#B7DAF5' -- light blue
END
 

Ответ №2:

В вашей примерной таблице нет нулей ни в одной из строк, если только вы не представляете NULL с 0 (ноль). В любом случае, я думаю, что было бы необходимо знать, какую клиентскую программу вы используете.

Ответ №3:

Примеры данных, которые вы помещаете, содержат 0 вместо NULL , поэтому вы, возможно, захотите проверить, больше 0 вместо IS NOT NULL .

 select *,
CASE
    WHEN Sales > 0 or Tasks > 0 THEN "#B7DAF5"
    ELSE "#FFFFFF"
END as Color
from TableName