Базы Данных (Data Base) | SQL & NoSQL. PostgreSQL, MySQL и Big Data. Уроки для Backend и Data Engineer. Архитектура БД, Оптимизация и Design.
IT и технологии · 30 июня 2026 г.
🔴 Антипаттерн: игнорирование поведения NULL в SQL — 30 июня 2026 г. в 07:03:09.594
🔴 Антипаттерн: игнорирование поведения NULL в SQL Когда ты пишешь WHERE column != 'value', ты можешь думать, что фильтруешь всё, что не равно 'value'. Но если в колонке есть NULL, такие строки выпадут из выборки. Почему? Потому что NULL != 'value' даёт… UNKNOWN, а не TRUE. ❌ Пример проблемы: SELECT * FROM users WHERE status != 'active'; Если status у кого-то NULL — он не попадёт в результат. Неочевидно, но критично. ✔️ Как избежать: 1. Явно учитывай NULL'ы: SELECT * FROM users WHERE status != 'active' OR status IS NULL; 2. Работай с COALESCE, если допустимо: SELECT * FROM users WHERE COALESCE(status, '') != 'active'; 📌 То же касается и =: NULL = 'value' → UNKNOWN 📌 Агрегации (COUNT, AVG`) тоже игнорируют `NULL — помни об этом при аналитике Вывод: NULL — не "ничего", а "неизвестно", и SQL строго это уважает. Не учитывая это, легко получить баг, который даже не заметишь сразу. 💡 Всегда проверяй поведение WHERE, JOIN и агрегатов с NULL. Пиши явный код, особенно в проде. Сохрани, чтобы не ловить баги на ровном месте. #db 👉 @database_info

