Valores nulos en SQL

null Para nadie es un secreto que los valores nulos (null) en SQL son especiales de ahí que no se comparen de igual forma que una cadena o un número y tengamos que utilizar sentencias como ‘is null’ o ‘is not null’; lo que ocurre es que hay algunas cosas que no se pueden hacer con estos valores y que realmente me disgustan, aunque no creo que ningún servidor de bases de datos lo tenga en cuenta para sus futuras versiones.

Operadores <>, != y distinct

Una de ella es que al comparar un campo con un valor,  por ejemplo casa <> ‘23’ (el campo casa distinto del valor 23) esto debería devolver todos los valores que no sean 23, pues si devuelve todos menos los nulos, para sacar los valores nulos debemos decir casa <> ‘23’ or casa is null. Mientras que si utilizamos select distinct casa si nos va a sacar el valor nulo como un valor.

Claves UNIQUE

Pues nada solo decir que si un campo es unique debe ser no null, no es porque lo diga la base de datos sino porque con dos valores que sean no null en el mismo campo ya entrarían en conflicto, a mi entender las claves unique deberían tener dos variantes, estrictas (incluir valores nulos) y no estrictas, estas ultimas que solo tuvieran en cuenta para aplicar la restricción a los valores no nulos.

La solución sería crear triggers o constraints según la base de datos que sea o hacerlo manualmente.

En fin son un grupo de ideas locas.

Comentarios