Как поведёт себя фильтр WHERE country IN ('RU', 'KZ') для строки, где country IS NULL?

AСтрока попадёт в результат, потому что NULL сравнивается со списком как обычное значение
BСтрока попадёт в результат, если в списке IN есть хотя бы два разных значения для проверки
CSQL выдаст ошибку выполнения из-за NULL в проверяемом столбце и прервёт запрос целиком
DСтрока не попадёт в результат, потому что выражение даёт UNKNOWN, а не TRUE
Правильный ответ. При country IS NULL выражение country IN (...) даёт UNKNOWN, поэтому строка не проходит WHERE.

Разбор

IN — это набор сравнений на равенство. Если country равно NULL, то сравнение с каждым элементом ('RU', 'KZ') даёт UNKNOWN. В итоге всё выражение не становится TRUE, и строка не проходит фильтр WHERE. Если нужно включать NULL, добавляют OR country IS NULL.

Проверь себя · 1/3разбор после ответа
Нужно выбрать пользователей без электронной почты. Какое условие в WHERE корректно найдёт строки, где email отсутствует?
Тренировать SQL в Telegram

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