Si bien la mayoría de las aplicaciones tendrán algún tipo de tecnología del lado del servidor o incluso del lado del cliente que se puede usar para filtrar los resultados de las consultas de la base de datos que pueden contener NULL
o valores vacíos, usar otro idioma y esa carga adicional de ejecutar código suele ser más costosa para el servidor y, de hecho, en gran medida innecesaria.
En cambio, a continuación, exploraremos brevemente cómo usar el motor de MySQL para realizar esta tarea, tomando solo los registros que desee y excluyendo aquellos con molestos NULL
columnas en la mezcla.
NO ES UN OPERADOR DE COMPARACIÓN NULO
Con mucho, el método más simple y directo para garantizar que el conjunto de resultados de una columna en particular no contenga NULL
valores es usar el IS NOT NULL
operador de comparación.
Por ejemplo, si queremos seleccionar todos los registros en nuestros books
tabla donde el primary_author
columna no es NULL
, la consulta podría verse así:
SELECT
primary_author,
published_date,
title
FROM
books
WHERE
primary_author IS NOT NULL;
Dado que IS NOT NULL
se comporta como cualquier otro comparador, se puede combinar con otros WHERE
cláusulas para filtrar aún más los resultados, como si estuviera usando =
, >
, <
, LIKE
y otros operadores de comparación estándar.
Filtrar NULL de varias columnas
En algunos casos, es posible que desee recuperar resultados donde no NULL
los valores están presentes en varias columnas. Por ejemplo, tenemos algunos registros en los books
tabla:
id | title | primary_author | published_date
1 | The Hobbit | Tolkien | 09-21-1937
2 | The Silmarillion | Tolkien | 09-15-1977
3 | The Name of the Wind | Rothfuss | 03-27-2007
4 | The Wise Man's Fear | Rothfuss | 03-01-2011
5 | The Doors of Stone | Rothfuss | NULL
6 | Beowulf | NULL | 01-01-1000
Toma nota que Las Puertas de Piedra (id 5
) no está publicado y, por lo tanto, published_date
es NULL
. Del mismo modo, Beowulf (id 6
) – el famoso poema épico en inglés antiguo – no tiene autor conocido, por lo que primary_author
es NULL
.
En este caso, es posible que deseemos consultar resultados que contengan solo los primeros cuatro registros, excluyendo así los últimos dos registros que tienen NULL
valores en cualquiera de primary_author
o published_date
. Esto se puede realizar con esta declaración simple usando AND
con múltiples operadores de comparación:
SELECT
primary_author,
published_date,
title
FROM
books
WHERE
(
primary_author IS NOT NULL
AND
published_date IS NOT NULL
);
Nota:los paréntesis no son obligatorios, pero es una buena práctica incluir comparadores agrupados para una mejor legibilidad.
Ahí tienes; un operador de comparación simple que se puede usar para filtrar cualquier NULL
valores en sus registros.