Documentación Firebird → Base de Datos Firebird → Guía de NULL en Firebird → Comprobando si algo es NULL |
Para resolver los estragos que NULL puede causar, a menudo tienes que saber si algo es NULL antes de usarlo en una expresión. Para algunos, lo obvio sería esto:
if (A = NULL) then...
y de hecho, hay sistemas de control de bases de datos que soportan esta sintaxis para determinarlo. Pero el SQL estándar no lo soporta y Firebird tampoco. En versiones anteriores a la 2.0, la expresión completa es ilegal. A partir de la 2.0 está permitida, pero la comparación siempre devuelve NULL, independientemente del valor de A o su estado. Es, por tanto, inútil; lo que necesitamos es un resultado limpio true o false.
El modo correcto para testear NULL es:
...is null / ...is not null
Estas comprobaciones devolverán siempre true o false sin errores. Ejemplos:
if (MiCampo is null) then...
select * from Alumnos where Telefono is not null
select * from Alumnos where not (Telefono is null) /* hace lo mismo que el ejemplo anterior */
update Numeros set Total = A + B + C where A + B + C is not null
Se puede decir que mientras “=” (cuando se usa como un operador de igualdad) puede comparar sólo valores, “is” compara estados.
Documentación Firebird → Base de Datos Firebird → Guía de NULL en Firebird → Comprobando si algo es NULL |