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

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

Разбор

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

Проверь себя · 1/3разбор после ответа
В таблице payments три строки со значениями amount: NULL, NULL, NULL. Что вернут запросы SELECT SUM(amount) и SELECT SUM(COALESCE(amount, 0))?
Тренировать SQL в Telegram

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