CodeGym /Cursos /SQL SELF /Comprobación de valores NULL: IS NULL e IS NOT NULL

Comprobación de valores NULL: IS NULL e IS NOT NULL

SQL SELF
Nivel 9 , Lección 1
Disponible

Hoy vamos a seguir aprendiendo sobre NULL, el héroe invisible de las bases de datos. Si todavía piensas que NULL es simplemente "nada", tienes razón, pero no del todo. En esta lección vamos a aprender cómo comprobar si hay NULL en nuestros datos y qué hacer con ello. ¿Listo para rastrear la ausencia de valores?

Vamos a empezar con algo sencillo: imagina que trabajas con la base de datos de una tienda online. Tienes una tabla de pedidos donde para algunos pedidos no se añadió información en los comentarios, y en otros sí hay notas. Si quieres buscar todos los pedidos con comentarios vacíos y usas comparaciones normales como = o <>, te vas a sorprender... ¿Por qué? ¡Porque NULL es un caso especial!

En SQL, para comprobar si hay o no NULL usamos IS NULL y IS NOT NULL. Estos operadores nos ayudan a entender NULL y conseguir los datos que necesitamos.

Comprobando valores con IS NULL

IS NULL se usa para ver si una columna o expresión tiene el valor NULL.

SELECT *
FROM orders
WHERE comment IS NULL;

Esta consulta devuelve todas las filas donde el valor de la columna comment es NULL. Es útil si quieres encontrar pedidos sin comentarios.

Aquí tienes un ejemplo de la tabla orders:

id customer_name total_amount comment
1 Otto Art 1500 "Entrega urgente"
2 Maria Chi 3000 NULL
3 Alex Lin 2000 ''
4 Anna Song 5000 NULL

Consulta:

SELECT id, customer_name
FROM orders
WHERE comment IS NULL;

Resultado:

id customer_name
2 Maria Chi
4 Anna Song

Fíjate que las filas con la cadena vacía '' no están incluidas, porque '' no es NULL.

Comprobando valores con IS NOT NULL

IS NOT NULL funciona al revés: comprueba si el valor no es NULL. Por ejemplo, si quieres ver todos los pedidos con comentarios:

SELECT *
FROM orders
WHERE comment IS NOT NULL;

Esta consulta solo devuelve las filas donde la columna comment tiene datos (incluyendo cadenas vacías '').

Ejemplo

La tabla orders sigue igual.

id customer_name total_amount comment
1 Otto Art 1500 "Entrega urgente"
2 Maria Chi 3000 NULL
3 Alex Lin 2000 ''
4 Anna Song 5000 NULL

Ejecutamos la consulta:

SELECT id, customer_name, comment
FROM orders
WHERE comment IS NOT NULL;

Resultado:

id customer_name comment
1 Otto Art "Entrega urgente"
3 Alex Lin ''

Ojo, la fila con la cadena vacía '' sí está incluida. SQL considera este valor como "no vacío".

¿Cuándo usar IS NULL y IS NOT NULL?

Aquí tienes algunos casos:

  1. Filtrado de datos: quieres excluir registros incompletos donde faltan valores.
  2. Manejo de errores: a veces NULL puede significar un error de entrada de datos y necesitas aislar esas filas.
  3. Análisis de datos: contar cuántos registros tienen valores ausentes ayuda a entender la calidad de los datos.

Aplicación práctica

Vamos a probar algunos ejercicios prácticos:

Ejercicio 1: Seleccionar estudiantes sin fecha de nacimiento indicada

Supón que tienes una tabla students:

id name birth_date
1 Otto Art 2000-05-10
2 Maria Chi NULL
3 Alex Lin 1998-12-30
4 Anna Song NULL

Consulta:

SELECT name
FROM students
WHERE birth_date IS NULL;

Resultado:

name
Maria Chi
Anna Song

Esta consulta es útil para buscar estudiantes a los que hay que pedir la fecha de nacimiento.

Ejercicio 2: Seleccionar pedidos con comentarios

id customer_name total_amount comment
1 Otto Art 1500 "Entrega urgente"
2 Maria Chi 3000 NULL
3 Alex Lin 2000 ''
4 Anna Song 5000 NULL

Para la tabla orders podemos encontrar los pedidos con comentarios rellenados:

SELECT customer_name, comment
FROM orders
WHERE comment IS NOT NULL;

Resultado:

customer_name comment
Otto Art "Entrega urgente"
Alex Lin ''

Comparación con operadores normales

Ahora vamos a dar un paso al lado y probar una consulta "errónea" para comprobar NULL:

SELECT *
FROM orders
WHERE comment = NULL;

¿Sorprendido? La consulta no devuelve ninguna fila, ni siquiera aquellas donde comment es claramente NULL. Esto es porque no puedes comparar NULL usando operadores estándar. Para este tipo de comparación, tienes que usar IS NULL.

2
Tarea
SQL SELF, nivel 9, lección 1
Bloqueada
Búsqueda de registros con valor ausente
Búsqueda de registros con valor ausente
2
Tarea
SQL SELF, nivel 9, lección 1
Bloqueada
Filtrado por datos disponibles
Filtrado por datos disponibles
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION