В таблице orders поле promo_code может быть NULL. Что произойдёт со строкой, где promo_code = NULL, при фильтре WHERE promo_code <> 'NONE'?

AСтрока попадёт в результат, потому что NULL считается «не равным» строке 'NONE'
BСтрока не попадёт в результат, потому что выражение promo_code <> 'NONE' даёт UNKNOWN
CСтрока попадёт в результат только если в запросе указан ORDER BY promo_code
DЗапрос упадёт с ошибкой, потому что оператор <> нельзя применять к NULL
Правильный ответ. Сравнение с NULL даёт UNKNOWN, а в WHERE остаются только строки со значением TRUE.

Разбор

В трёхзначной логике сравнение NULL <> 'NONE' возвращает не TRUE и не FALSE, а UNKNOWN. Условие WHERE пропускает только TRUE, поэтому строки с NULL отбрасываются. Чтобы такие строки явно включить, добавляют OR promo_code IS NULL или используют COALESCE(promo_code, '...') в зависимости от смысла фильтра.

Можно заниматься бесплатно

Готовим вопросы…

Три вопроса по теме этой страницы, с объяснениями.

Продолжить в браузере

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