Условие (т. Е. Логическое выражение) является истинным, ложным или нулевым.В MySQL эти логические значения имеют числовые эквиваленты: true = 1, false = 0, null = null.IFNULL
принимает два аргумента.Если первый аргумент равен нулю, он возвращает второй аргумент, в противном случае первый.
Вот что делает IFNULL(condition,1)
:
condition | true = 1 | false = 0 | null
IFNULL(condition,1) | true = 1 | false = 0 | true = 1
Итак, выражение, которое приводит к нулю (например, 123 = null
) заканчивается как true.
Затем вы применяете это выражение case:
CASE WHEN IFNULL(condition,1) = 0 THEN 1 ELSE IFNULL(condition,1) END
В случае, если IFNULL
result равно 0 (false), все выражение case становится 1 (true)).В противном случае вы сохраняете результат IFNULL
.
condition | true = 1 | false = 0 | null
IFNULL(condition,1) | true = 1 | false = 0 | true = 1
result | true = 1 | true = 1 | true = 1
В итоге вы всегда получаете 1. Таким образом, вы получаете
select user_id, 1 as adjusted_condition, transact_id
from user_transaction