SQL-сервер NULL

Резюме: в этом руководстве вы узнаете о 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;

Пример SQL Server IS NULL

Запрос вернул клиентов, у которых не было информации о телефоне.

Чтобы проверить, не равно ли значение 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;

SQL-сервер НЕ ЯВЛЯЕТСЯ NULL

Краткое содержание

  • NULL указывает на отсутствие данных или неизвестную информацию.
  • Используйте оператор IS NULL, чтобы проверить, является ли значение NULL или нет.
Мирослав С.

Автор статей, ИБ-специалист