Saltar a contenido

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:

address table

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.