ОсновыНачальный
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; -- удалённыеСвязанные термины
Анекдоты по теме
— Почему PRIMARY KEY не может быть NULL? — Потому что паспорт без номера — это не паспорт. «Я есть, но кто я — неизвестно» — так не работает.
— Что вернёт AVG(salary) если все зарплаты NULL? — NULL. — А SUM? — NULL. — А COUNT(salary)? — 0. COUNT считает непустые, их нет. — А COUNT(*)? — Количество строк. Это COUNT строк, не значений.
Программист пишет: WHERE name = NULL База данных: я тебя не понимаю. Программист: почему?! База данных: потому что NULL не равен даже самому себе. Используй IS NULL.