A.2 A Note on Equality
Important
This note about equality and inequality operators applies everywhere in Firebird’s SQL language.
The =
operator, which is explicitly used in many conditions, only matches values to values. According to the SQL standard, NULL
is not a value and hence two NULLs
are neither equal nor unequal to one another. If you need NULLs
to match each other in a condition, use the IS NOT DISTINCT FROM
operator. This operator returns true if the operands have the same value or if they are both NULL
.
select *
from A join B
on A.id is not distinct from B.code
Likewise, in cases where you want to test against NULL
for a condition of inequality, use IS DISTINCT FROM
, not <>
. If you want NULL
to be considered different from any value and two NULLs
to be considered equal:
select *
from A join B
on A.id is distinct from B.code