🔍 Ловушка NULL в SELECT для QA
🔍 Ловушка NULL в SELECT: почему «= NULL» не работает
Многие начинающие (и не только) SQL-разработчики попадаются на коварстве NULL. NULL — маркер отсутствия данных.
❌ Ошибка: WHERE column = NULL — никогда не вернёт строк, даже если в колонке есть NULL. Потому что NULL не равен ничему, даже самому себе.
✅ Правильно: WHERE column IS NULL — проверка на отсутствие значения.
⚠️ В чём ловушка? SQL использует трёхзначную логику: TRUE / FALSE / UNKNOWN. Любое сравнение с NULL даёт UNKNOWN, а в условие WHERE попадают только строки с TRUE. Поэтому = NULL молча отбрасывает нужные записи — без ошибки, но с неверным результатом.
📌 Пример из реальной задачи Нужно найти заявки, где дата выполнения не проставлена (столбец Executiondate содержит NULL).
Вот так — неправильно:
SELECT Accountid, Incomingdate FROM Request WHERE Executiondate = NULL; – ❌ вернёт 0 строк
А так — правильно:
SELECT Accountid, Incomingdate FROM Request WHERE Executiondate IS NULL; – ✅ вернёт все незавершённые заявки
💡 Золотое правило Для проверки на NULL всегда используйте IS NULL или IS NOT NULL. Любое другое сравнение (=, <>, !=, IN, NOT IN) с участием NULL приведёт к неожиданным пустым результатам.
Берегите свои SELECT-ы! 🛡️
· 27.05
На курсах о таком не говорили(((
ответить
коммент удалён
· 8 ч
В ПТУ на компьютерщика клавиатуры тоже(((
ответить
ответ удалён
· 8 ч
???
ответить
ответ удалён