Разница условий 'is null' и '= null' в SQL: понимание и применение

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

В SQL для определения строк с NULL значениями нам следует использовать оператор IS NULL. Сравнение с NULL посредством оператора =, является неправильным подходом, так как NULL неизвестно значение и его нельзя сравнить ни с чем, даже с самим собой. Поэтому при работе с NULL в запросах всегда используйте IS NULL.

Верно:

SQL
Скопировать код
SELECT * FROM your_table WHERE your_column IS NULL;

Неверно, результаты не будут получены:

SQL
Скопировать код
SELECT * FROM your_table WHERE your_column = NULL;

Важно помнить, что NULL требует особого учёта и использования IS NULL.

Кинга Идем в IT: пошаговый план для смены профессии

Базовые правила работы с NULL в SQL

NULL: уникальный элемент в мире SQL

В SQL NULL означает отсутствие значения. Это может означать, что значение не определено, не задано или не применимо. Именно по этой причине стандартное сравнение с помощью =, <> или < с NULL будет недействительным.

NULL: поворотный пункт в операциях SQL

Включив NULL в операцию SQL, вы обнаружите, что результат всегда неопределён. Это справедливо для арифметических операций, конкатенации строк и сравнений с другими значениями. Приведем наглядный пример:

Неверно:

SQL
Скопировать код
SELECT 'Совпадение найдено' WHERE NULL = NULL;

Верно:

SQL
Скопировать код
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 встречает сравнения: появляются неопределенные результаты:

SQL
Скопировать код
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 значения:

SQL
Скопировать код
SELECT * FROM products WHERE description IS NULL;

NULL и OUTER JOIN

NULL может появиться в результатах OUTER JOIN, если в одной из таблиц отсутствуют подходящие записи:

SQL
Скопировать код
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, что может повлиять на производительность запроса:

SQL
Скопировать код
SELECT * FROM users WHERE email IS NULL;

Полезные материалы

  1. Объяснение IS NULL и IS NOT NULL в SQL.
  2. Обсуждение IS NULL и = NULL на Stack Overflow.
  3. Продвинутый SQL и использование IS DISTINCT FROM для работы с NULL.
  4. Энциклопедия по работе с NULL в SQL от Oracle.