Разница условий 'is null' и '= null' в SQL: понимание и применение
Быстрый ответ
В SQL для определения строк с NULL
значениями нам следует использовать оператор IS NULL
. Сравнение с NULL
посредством оператора =
, является неправильным подходом, так как NULL
неизвестно значение и его нельзя сравнить ни с чем, даже с самим собой. Поэтому при работе с NULL
в запросах всегда используйте IS NULL
.
Верно:
SELECT * FROM your_table WHERE your_column IS NULL;
Неверно, результаты не будут получены:
SELECT * FROM your_table WHERE your_column = NULL;
Важно помнить, что NULL
требует особого учёта и использования IS NULL
.
Базовые правила работы с NULL в SQL
NULL: уникальный элемент в мире SQL
В SQL NULL
означает отсутствие значения. Это может означать, что значение не определено, не задано или не применимо. Именно по этой причине стандартное сравнение с помощью =
, <>
или <
с NULL
будет недействительным.
NULL: поворотный пункт в операциях SQL
Включив NULL
в операцию SQL, вы обнаружите, что результат всегда неопределён. Это справедливо для арифметических операций, конкатенации строк и сравнений с другими значениями. Приведем наглядный пример:
Неверно:
SELECT 'Совпадение найдено' WHERE NULL = NULL;
Верно:
SELECT 'Совпадение найдено' WHERE NULL IS NULL;
Гласите правило: избегайте ошибок при работе с NULL
Будьте особенно внимательны при использовании NULL
с агрегатными функциями:
COUNT(column_name)
– не учитывает строки сcolumn_name
, равнымNULL
.SUM
иAVG
– пропускаютNULL
значения, что может исказить ожидаемый результат.
Визуализация
IS NULL: подобно игры в покер, обнаруживает скрытую карту (NULL), которая представлена Джокером (🃏).
= NULL: бесплодный поиск – ничего не обнаруживает, так как NULL не равен даже самому себе.
Ключевой момент: Используйте "IS NULL"
для идентификации NULL; "= NULL"
ничего не найдет.
Интересный случай с NULL в SQL
NULL: КОТ Шрёдингера SQL
NULL в SQL cледует воспринимать как кота Шрёдингера: он существует и в то же время не существует до тех пор, пока на него не обратят внимание с помощью правильного предиката IS NULL
или IS NOT NULL
.
Как работать с NULL в SQL
Когда NULL встречает сравнения: появляются неопределенные результаты:
SELECT 'Не отобразится' WHERE NULL <> NULL;
SELECT 'Также не отобразится' WHERE NULL = 1;
Стратегия работы с NULL в SQL
- Используйте функции COALESCE или ISNULL, чтобы заменить NULL на другое значение.
- Применяйте
IS NOT NULL
, чтобы убедиться, что значение в столбце не равно NULL.
NULL в условных запросах: IS NULL против = NULL
Использование условий при поиске NULL
Правильное использование IS NULL
в условии запроса поможет найти скрытые NULL значения:
SELECT * FROM products WHERE description IS NULL;
NULL и OUTER JOIN
NULL
может появиться в результатах OUTER JOIN
, если в одной из таблиц отсутствуют подходящие записи:
SELECT customers.name, orders.order_id
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id
WHERE orders.order_id IS NULL;
NULL и индексация: важный момент
Индексы часто игнорируют NULL, что может повлиять на производительность запроса:
SELECT * FROM users WHERE email IS NULL;
Полезные материалы
- Объяснение
IS NULL
иIS NOT NULL
в SQL. - Обсуждение
IS NULL
и= NULL
на Stack Overflow. - Продвинутый SQL и использование
IS DISTINCT FROM
для работы с NULL. - Энциклопедия по работе с NULL в SQL от Oracle.