ОсновыНачальный
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. — А само условие? — NULL. — А вы сами существуете? — NULL...
NULLIF(a, b) говорит: если a равно b — верну NULL, иначе верну a. Использование: NULLIF(price, 0) — избегает деления на ноль. SELECT total / NULLIF(count, 0) — если count = 0, получим NULL, а не ошибку. Programmer: изящно! DBA: именно для этого и придумали.
— Почему PRIMARY KEY не может быть NULL? — Потому что паспорт без номера — это не паспорт. «Я есть, но кто я — неизвестно» — так не работает.