IS NULL и IS NOT NULL

Базовый SQL
≈ 1 мин чтения

NULL проверяется специальными конструкциями

Мы уже знаем, что NULL означает отсутствие известного значения. Поэтому его нельзя корректно искать как обычное значение через = или <>.

SELECT id, name
FROM users
WHERE email IS NULL;

IS NULL возвращает строки, где значение отсутствует. Обратная проверка записывается как IS NOT NULL.

SELECT id, name
FROM users
WHERE email IS NOT NULL;

Почему = NULL не работает как ожидается

Сравнение предполагает два известных значения. Если одна сторона неизвестна, SQL не может сказать, что они равны или не равны обычным способом. Поэтому проверка email = NULL не является заменой email IS NULL.

Запомни пару: IS NULL / IS NOT NULL. Это не стилистическое предпочтение, а отдельная семантика SQL для проверки отсутствующего значения.