Поделиться через


NULL и UNKNOWN (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric

NULLуказывает, что значение неизвестно. NULL отличается от пустого или нулевого значения. Два значения NULL считаются эквивалентными. Сравнение двух значений NULL или между значением NULL и любым другим значением возвращается неизвестно, так как значение каждого из них NULL неизвестно.

Значение NULL обычно указывает на то, что данные неизвестны, неприменимы или будут добавлены позже. Например, начальный центр клиента может быть не известен в то время, когда клиент помещает заказ.

Необходимо учесть следующие моменты.

  • Чтобы проверить значения NULL в запросе, используйте IS NULL или IS NOT NULL в предложении WHERE .

  • Значения NULL можно вставить в столбец, явно указав NULL в операторе INSERT или UPDATE операторе или оставив столбец вне инструкции INSERT .

  • Значения NULL нельзя использовать в качестве сведений, необходимых для различения одной строки в таблице от другой строки в таблице. Примеры включают первичные ключи или сведения, используемые для распространения строк, таких как ключи распространения.

Замечания

Если значения NULL присутствуют в данных, логические операторы и операторы сравнения могут потенциально возвращать третий результат UNKNOWN , а не просто TRUE или FALSE. Эта тройственная логика является источником многих проблем в приложениях. Логические операторы в логическое выражение, которое включает UNKNOWN возвращаемое UNKNOWNзначение, если результат оператора не зависит от UNKNOWN выражения. В таблицах содержатся примеры такого поведения.

В следующей таблице показаны результаты применения AND оператора к двум логическим выражениям, в которых возвращается UNKNOWNодно выражение.

Выражение 1 Expression 2 Результат
TRUE UNKNOWN UNKNOWN
UNKNOWN UNKNOWN UNKNOWN
FALSE UNKNOWN FALSE

В следующей таблице показаны результаты применения OR оператора к двум логическим выражениям, в которых возвращается UNKNOWNодно выражение.

Выражение 1 Expression 2 Результат
TRUE UNKNOWN TRUE
UNKNOWN UNKNOWN UNKNOWN
FALSE UNKNOWN UNKNOWN