Firebird Documentation Index → Guide Firebird et NULL → Tester si quelque chose est NULL |
Puisque NULL
peut vous poser des problèmes,
vous aurez souvent à tester si quelque chose est NULL
avant de l'utiliser dans une expression. La plupart
du temps, on pense que le test le plus indiqué serait
if (A =
NULL
) then...
et de fait certains systèmes de gestion de base de données
supportent cette syntaxe pour déterminer l'état NULL
.
Mais le standard SQL ne le permet pas, et Firebird non plus. Dans les
version avant 2.0 cette syntaxe est même illégale. Depuis la 2.0 c'est
permis, mais la comparaison retournera toujours NULL
,
quels que soient l'état et la valeur de A. Et cela n'est pas très utile
comme test - ce dont nous avons besoin est un résultat clair
true
ou false
.
La façon correcte de tester NULL
est:
...is null
/...is not null
Ces tests retourneront toujours true
ou
false
- sans tourner autour du pot. Exemples:
if (MyField is null) then...
select * from Pupils where PhoneNumber is not null
select * from Pupils where not (PhoneNumber is null) /* exemple identique au précédent */
update Numbers set Total = A + B + C where A + B + C is not null
On peut dire que « =
» (utilisé comme
opérateur d'égalité) peut seulement comparer des valeurs, « et que
is
» teste un
état.
Firebird Documentation Index → Guide Firebird et NULL → Tester si quelque chose est NULL |