Русский
Открыть в Telegram

Пост Избегайте использования IN с NULL

10 марта 2026
P
Python Portal
Избегайте использования IN с NULL Оператор IN относится к тем конструкциям, которые легко вносят тихие баги в запрос, если использовать его неправильно. Когда вы включаете NULL в список IN, сравнение никогда не даст TRUE для части с NULL. В результате строки, содержащие NULL, не матчятся так, как многие ожидают. SQL использует трёхзначную логику: TRUE, FALSE и UNKNOWN. Сравнения с NULL не возвращают ни TRUE, ни FALSE; они возвращают UNKNOWN. Вот наивный вариант использования IN: SELECT * FROM Employees WHERE DepartmentID IN (1, 2, NULL); Поскольку NULL даёт UNKNOWN, запрос выше выполнится без ошибок, но гарантированно вернёт пустой результат. Правильный способ обрабатывать NULL - использовать IS NULL. IS NULL явно учитывает то, как SQL работает с отсутствующими значениями. Это помогает запросу корректно различать реальные значения и неизвестные значения, что предотвращает тихие логические ошибки. Вот как этот запрос лучше писать: SELECT * FROM Employees WHERE DepartmentID IN (1, 2) OR DepartmentID IS NULL; 👉 @PythonPortal
23 · 6.9K ·

Рядом в ленте

PPython PortalЕсли бы мне нужно было масштабировать систему, я бы рассмотрел вот эти 40 техник: 1. Горизонтальное масштабирование 2. Вертикальное масштабирование 3. КэшированPPython PortalХочу взять себе этот ключ. Кто-то уже использует такой? Проверьте плиз, хочу убедиться, что этот не занят ещё
это сообщение
PPython PortalСовет по Python: не используйте if для подсчёта элементов. Используйте defaultdict. У вас есть список элементов, и вы хотите узнать, сколько раз каждый элемент PPython Portal👉 @PythonPortal

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем