Базы Данных (Data Base) | SQL & NoSQL. PostgreSQL, MySQL и Big Data. Уроки для Backend и Data Engineer. Архитектура БД, Оптимизация и Design.
IT и технологии · 15 мая 2026 г.
Антипаттерн: NULL в WHERE — и ты в ловушке — 15 мая 2026 г. в 08:10:01.292
Антипаттерн: NULL в WHERE — и ты в ловушке Когда в таблице есть NULL, а в WHERE ты пишешь что-то вроде: SELECT * FROM users WHERE age != 30; Ты ожидаешь, что выберутся все, кто не 30. Но если age IS NULL — такие строки пропадут из выборки! Почему? Потому что NULL != 30 не TRUE, это UNKNOWN. А SQL возвращает строки только там, где WHERE → TRUE. Как избежать? 1. Будь явно осторожен с NULL: SELECT * FROM users WHERE age != 30 OR age IS NULL; 2. Логика на уровне схемы: – Если поле нужно всегда — делай NOT NULL. – Если допускаешь NULL, продумывай поведение выборок. 3. Не верь глазам своим: Даже count(*) и count(column) ведут себя по-разному из-за NULL. Вывод: NULL — это не ноль, не пустая строка и не "ничего". Это "мы не знаем". И SQL ведёт себя с ним очень осторожно. Сохрани, чтобы не словить грабли. #db 👉 @database_info

