A Note on Equality
Important
|
This note about equality and inequality operators applies everywhere in Firebird’s SQL language, not only in |
The “=
” operator, which is explicitly used in many conditional joins and implicitly in named column joins and natural joins, only matches values to values.According to the SQL standard, NULL
is not a value and hence two NULL
s are neither equal nor unequal to one another.If you need NULL
s to match each other in a join, 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, when you want to join on inequality, use IS DISTINCT FROM
, not “<>
”, if you want NULL
to be considered different from any value and two NULL
s considered equal:
select *
from A join B
on A.id is distinct from B.code;