En el mundo de las bases de datos, NULL significa que falta información o que no es aplicable. NULL no es un valor, por lo tanto, no se puede comparar con otros valores como números o cadenas.
La comparación de NULL con un valor siempre dará como resultado NULL. Además, NULL no es igual a NULL por lo que la siguiente expresión devuelve NULL:
SELECT null = null AS result;
Salida:
result
--------
null
(1 row)Code language: JavaScript (javascript)
Operador IS NULL¶
Para comprobar si un valor es NULL o no, no se pueden utilizar los operadores igual a (=
) o no igual a (<>
). En su lugar, se utiliza el operador IS NULL
.
Esta es la sintaxis básica del operador IS NULL
:
value IS NULL
El operador IS NULL
devuelve NULL si el valor es NULL o false en caso contrario.
Para negar el operador IS NULL
, se utiliza el operador IS NOT NULL
:
value IS NOT NULL
El operador IS NOT NULL
devuelve verdadero si el valor no es nulo o falso en caso contrario.
Para tratar con NULL en la ordenación, consulte el tutorial ORDER BY).
PostgreSQL ofrece algunas funciones que tratan con NULL incluyendo NULLIF, ISNULL, y COALESCE.
Para asegurar una columna que no contiene NULL, puede utilizar la restricción NOT NULL.
Ejemplos del operador IS NULL de PostgreSQL¶
Utilizaremos la tabla address
de la base de datos de ejemplo:
El psql
muestra NULL
como una cadena vacía por defecto. Para cambiar la forma en que psql
muestra el null en la terminal, puede utilizar el comando \pset null null
. Mostrará NULL como null.
Ejemplo básico del operador IS NULL¶
El siguiente ejemplo utiliza el operador IS NULL
para encontrar las direcciones de la tabla address
que la columna address2
contiene NULL
:
SELECT
address,
address2
FROM
address
WHERE
address2 IS NULL;
Salida:
address | address2
----------------------+----------
47 MySakila Drive | null
28 MySQL Boulevard | null
23 Workhaven Lane | null
1411 Lillydale Drive | null
(4 rows)Code language: JavaScript (javascript)
Ejemplo de uso del operador IS NOT NULL¶
El siguiente ejemplo utiliza el operador IS NOT NULL
para recuperar la dirección que tiene la dirección2 no nula:
SELECT
address,
address2
FROM
address
WHERE
address2 IS NOT NULL;
Salida:
address | address2
----------------------------------------+----------
1913 Hanoi Way |
1121 Loja Avenue |
692 Joliet Street |
1566 Inegl Manor |
Fíjate en que la dirección2
está vacía, no es NULL. Este es un buen ejemplo de una mala práctica cuando se trata de almacenar cadenas vacías y NULL en la misma columna.
Para arreglarlo, puedes usar la sentencia UPDATE
para cambiar las cadenas vacías a NULL en la columna address2
, lo cual aprenderás en el tutorial UPDATE.
Resumen¶
- En bases de datos, NULL significa información faltante o no aplicable.
- Utilice el operador
IS NULL
para comprobar si un valor es NULL o no.