Documenti Firebird → Guida sull'uso di NULL nel linguaggio SQL di Firebird → Come controllare se ci sono NULL |
Vista la confusione che NULL può provocare, spesso può essere utile voler sapere se qualcosa è NULL prima di usarlo in una espressione. Ad alcuni il test più ovvio potrebbe sembrare
if (A = NULL) then...
ed infatti ci sono gestioni di basi di dati che supportano tale sintassi per determinare la nullità di una variabile. Purtroppo non lo permette (coerentemente) lo standard SQL, e neppure Firebird. Nelle versioni prima della 2.0 questa sintassi è perfino illegale. Dalla 2.0 in poi viene permessa, ma il test riporta sempre NULL, indipendentemente da quale che sia il valore o lo stato della variabile A. È pertanto un test inutile; quello di cui si ha bisogno è un risultato che sia chiaramente o vero o falso (cioè true oppure false).
Il modo corretto per controllare se una variaile è NULL si fa così:
...is null / ...is not null
Questi test riportano sempre true oppure false, senza incertezze. Ecco alcuni esempi:
if (CampoMio is null) then...
select * from Alunni where NumeroTelefono is not null
select * from Alunni where not (NumeroTelefono is null) /* fa la stessa cosa dell'esempio precedente */
update Numeri set Totale = A + B + C where A + B + C is not null
Si può dire che mentre “=” (quando usato come operatore di uguagianza) può solo confrontare valori, “is” controlla uno stato.
Documenti Firebird → Guida sull'uso di NULL nel linguaggio SQL di Firebird → Come controllare se ci sono NULL |