1С:Предприятие 8
Система программ

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

09.06.2012

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

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

Например:

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

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

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