ОсновыНачальный
NULL / IS NULL
NULL означает отсутствие значения. Для проверки используется IS NULL, а не = NULL.
Синтаксис
WHERE col IS NULL WHERE col IS NOT NULL COALESCE(col, default_value)
Объяснение
NULL — не пустая строка и не 0. NULL = «неизвестно».
Любое сравнение с NULL через = или != возвращает NULL (не TRUE и не FALSE):
- NULL = NULL → NULL
- NULL != NULL → NULL
Правильная проверка: IS NULL / IS NOT NULL.
NULL в арифметике: 5 + NULL = NULL. В агрегатах: SUM, AVG, MIN, MAX игнорируют NULL.
Пример
-- Неправильно (всегда 0 строк): SELECT * FROM users WHERE deleted_at = NULL; -- Правильно: SELECT * FROM users WHERE deleted_at IS NULL; -- не удалённые SELECT * FROM users WHERE deleted_at IS NOT NULL; -- удалённые
Связанные термины
Анекдоты по теме
— Почему программист расстался с базой данных? — Она всегда отвечала NULL на вопрос «ты меня любишь?».
— Что вернёт NULL + 1? — NULL. — А NULL * 0? — NULL. — А NULL = NULL? — NULL. — Это вообще законно? — Это математика трёхзначной логики. NULL — не число, не строка, не ложь. NULL — неизвестность.
— Почему программисты не любят NULL в анкетах? — Потому что если в поле «Возраст» стоит NULL, то на вопрос «Старше 18?» база ответит: «Не знаю». А билет в кино уже не купишь.