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

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

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

Например:

Копировать в буфер обмена

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

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

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