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

Aemail = NULL
Bemail <> NULL
Cemail IS NULL
DCOALESCE(email, '') = ''
Правильный ответ. С NULL нельзя корректно сравнивать через = или <> — для проверки пропусков используйте IS NULL / IS NOT NULL.

Разбор

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

Проверь себя · 1/3разбор после ответа
Что вернёт выражение CASE WHEN is_active = 1 THEN 'active' END для строки, где is_active = 0?
Тренировать SQL в Telegram

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