Нужно выбрать пользователей без электронной почты. Какое условие в WHERE корректно найдёт строки, где email отсутствует?

AWHERE email = NULL
BWHERE email <> NULL
CWHERE email IS NULL
DWHERE COALESCE(email, '') = ''
Правильный ответ. С NULL нельзя сравнивать через = или <> — для проверки пропусков используется IS NULL или IS NOT NULL.

Разбор

В SQL сравнения вида email = NULL или email <> NULL возвращают не TRUE или FALSE, а UNKNOWN, потому что NULL означает «неизвестно». В WHERE проходят только строки с истинным условием, поэтому такие сравнения не отберут пропуски. Для проверки пропуска используется email IS NULL. Вариант с COALESCE(email, '') = '' смешивает NULL и пустую строку и может дать неверный смысл, если пустая строка встречается как отдельное допустимое значение.

Проверь себя · 1/3разбор после ответа
В таблице users столбец is_test может быть 0, 1 или NULL. Нужно исключить тестовых пользователей (is_test = 1), но оставить остальных, включая NULL. Какой фильтр корректен?
Тренировать SQL в Telegram

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