Нужно выбрать пользователей без электронной почты. Какое условие в 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 и пустую строку и может дать неверный смысл, если пустая строка встречается как отдельное допустимое значение.

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

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

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

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

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