Версия для печати Поиск
Главная Для начинающих разработчиков Учимся программировать

Почему в запросе не работает сравнение <Выражение> = NULL?

Если в запросе есть необходимость проанализировать значение некоторого выражения на равенство NULL, следует использовать не операции сравнения (=, <>), а специальный оператор проверки значения выражения на равенство NULL, имеющий следующий синтаксис:

<Выражение> ЕСТЬ [НЕ] NULL

Например:

ВЫБРАТЬ
   Номенклатура.Наименование,
   Номенклатура.НомерГТД
ИЗ
   Справочник.Номенклатура КАК Номенклатура
ГДЕ
   ((Номенклатура.НомерГТД) ЕСТЬ НЕ NULL )

Если же в этом запросе вместо конструкции ЕСТЬ НЕ использовать операцию сравнения (<>), то это приведет к тому, что записи отбираться не будут.

Следует отметить, что, несмотря на то, что при сравнении значений разных типов определен приоритет типов (NULLБулевоЧислоДатаСтрока, ссылка), подобное сравнение имеет смысл для всех типов, кроме NULL. Наличие типа NULL в этой иерархии необходимо лишь для того, чтобы обеспечить упорядочивание записей результата запроса в соответствии с порядком, заданным в предложении УПОРЯДОЧИТЬ ПО.

Последнее обновление: 09.06.2012

Обсудить статью на форуме

Задать другой вопрос / Закрыть