Ensemble Firebird Doc → Firebird Docs → 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.
Ensemble Firebird Doc → Firebird Docs → Guide Firebird et NULL → Tester si quelque chose est NULL |