Резюме: в этом руководстве вы узнаете о NULL и трехзначной логике в SQL Server. Вы также узнаете, как использовать операторы IS NULL и IS NOT NULL для проверки того, является ли значение NULL или нет.
NULL и трехзначная логика
В мире баз данных NULL используется для указания отсутствия какого-либо значения данных. Например, при записи информации о клиенте адрес электронной почты может быть неизвестен, поэтому вы записываете его как NULL в базу данных.
Обычно результатом логического выражения является TRUE или FALSE. Однако, когда в логической оценке участвует NULL, результатом может быть UNKNOWN. Таким образом, логическое выражение может возвращать одно из трехзначных значений логики: TRUE, FALSE и UNKNOWN.
Результаты следующих сравнений НЕИЗВЕСТНЫ:
NULL = 0 NULL 0 NULL > 0 NULL = NULL
NULL не равен ничему, даже самому себе. Это означает, что NULL не равен NULL, потому что каждый NULL может быть разным.
Оператор IS NULL
См. следующую таблицу клиентов из образца базы данных.
Следующий оператор находит клиентов, номера телефонов которых не записаны в таблице клиентов:
SELECT customer_id, first_name, last_name, phone FROM sales.customers WHERE phone = NULL ORDER BY first_name, last_name;
Запрос вернул пустой набор результатов.
Предложение WHERE возвращает строки, которые приводят к тому, что его предикат оценивается как TRUE. Однако следующее выражение оценивается как UNKNOWN.
phone = NULL;
Таким образом, вы получаете пустой набор результатов.
Чтобы проверить, является ли значение NULL или нет, всегда используйте оператор IS NULL.
SELECT customer_id, first_name, last_name, phone FROM sales.customers WHERE phone IS NULL ORDER BY first_name, last_name;
Запрос вернул клиентов, у которых не было информации о телефоне.
Чтобы проверить, не равно ли значение NULL, можно использовать оператор IS NOT NULL. Например, следующий запрос возвращает клиентов, у которых есть информация о телефоне:
SELECT customer_id, first_name, last_name, phone FROM sales.customers WHERE phone IS NOT NULL ORDER BY first_name, last_name;
Краткое содержание
- NULL указывает на отсутствие данных или неизвестную информацию.
- Используйте оператор IS NULL, чтобы проверить, является ли значение NULL или нет.