Сравнение с null в Delphi

Результат сравнения с null зависит от значения переменных NullEqualityRule и NullMagnitudeRule.

NullEqualityRule определяет правила для равенства:

var
  v: Variant;
  b: Boolean;
begin
  v := Null;

  NullEqualityRule := ncrLoose;  // Значение по умолчанию.
  // Null равен другому Null и не равен другим значениям
  b := (v = Null); // True

  NullEqualityRule := ncrStrict;  
  // Как в СУБД. Null не равен ничему, в том числе, другому Null
  b := (v = Null); // False
  
  NullEqualityRule := ncrError;  
  // Сравнение с Null будет вызывать исключение
  b := (v = Null); // Здесь будет ошибка

... 

NullMagnitudeRule аналогично определяет поведение для операторов сравнения больше и меньше:

var
  v: Variant;
  b: Boolean;
begin
  v := Null;

  NullMagnitudeRule := ncrLoose;  // Значение по умолчанию.
  // Null меньше любого другого значения
  b := (v < 0); // True
  b := (v > 0); // False

  NullMagnitudeRule := ncrStrict;
  // Как в СУБД. Сравнение с Null всегда ложь
  b := (v < 0); // False
  b := (v > 0); // False

  NullMagnitudeRule := ncrError;
  // Сравнение с Null будет вызывать исключение
  b := (v < 0); // Здесь будет ошибка

...