| Firebird Documentation Index → NULL в СУБД Firebird → Проверка на NULL |
![]() |
В свете того, какой беспорядок может навести
NULL, вы часто захотите узнать, является ли что-либо
NULL прежде, чем вы будете
использовать это в выражении. Для некоторых очевидная проверка должна
выглядеть так:
if (A =NULL) then...
И в самом деле, есть системы управления базами данных, которые
поддерживают такой синтаксис проверки на NULL. Но
стандарт SQL не допускает этого, не допускает этого и СУБД Firebird. В
версиях до 2.0 такой синтаксис был даже недопустим. С версии 2.0 он
разрешается, но сравнение всегда вернет NULL,
независимо от состояния и значения A. Поэтому такой тест на
NULL является бесполезным - нам нужен явный результат
true или false.
Корректный способ проверки на NULL
такой:
...is null/...is not null
Эта проверка всегда вернет true или
false - и никакой неразберихи. Примеры:
if (MyField is null) then...
select * from Pupils where PhoneNumber is not null
select * from Pupils where not (PhoneNumber is null) /* делает то же самое, что и предыдущий пример */
update Numbers set Total = A + B + C where A + B + C is not null
Можно сказать, что в то время как равенство «=» (когда используется
как оператор равенства) может сравнивать значения, «is» проверяет
состояние.
| Firebird Documentation Index → NULL в СУБД Firebird → Проверка на NULL |