В выражении CASE ветки проверяются сверху вниз. Что вернёт CASE WHEN amount IS NULL THEN 'missing' WHEN amount = 0 THEN 'zero' ELSE 'positive' END для строки, где amount равен NULL?

A'zero'
B'positive'
C'missing'
DNULL
Правильный ответ. CASE выбирает первую подходящую ветку WHEN (где условие TRUE).

Разбор

В CASE ветки проверяются по порядку. Для значения NULL первое условие amount IS NULL истинно, поэтому сразу возвращается 'missing', и до проверки amount = 0 дело не доходит. Если бы ветка с IS NULL стояла последней, проверка amount = 0 для NULL дала бы неизвестный результат, и значение попало бы в ELSE. Поэтому наиболее специфичные условия (часто IS NULL) удобно ставить выше по списку.

Проверь себя · 1/3разбор после ответа
Что вернёт выражение COALESCE(NULL, NULL, 'web', 'app')?
Тренировать SQL в Telegram

Ещё вопросы по теме «Выражения и NULL»