0Pricing
SQL Academy · Lección

IS NULL, IS NOT NULL y COALESCE

Detecte valores NULL con IS NULL, sustitúyalos con COALESCE / NULLIF y diseñe consultas que gestionen correctamente los datos ausentes.

IS NULL, IS NOT NULL y COALESCE es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Academy incluye 4 lecciones en total.

Comprobar si es NULL

Use IS NULL y IS NOT NULL; nunca = NULL:

SELECT * FROM users WHERE deleted_at IS NULL;
SELECT * FROM users WHERE deleted_at IS NOT NULL;

Por qué = NULL falla silenciosamente

Comparar cualquier valor con NULL produce NULL (desconocido). La fila se descarta, pero no se genera ningún error, por lo que el error llega a producción:

SELECT * FROM users WHERE deleted_at = NULL;
-- → returns 0 rows, always

COALESCE: el primer valor no NULL

COALESCE acepta cualquier cantidad de argumentos y devuelve el primero que no sea NULL:

SELECT id,
       COALESCE(nickname, full_name, email, 'Anonymous') AS display_name
FROM users;

COALESCE en WHERE

Use COALESCE para convertir NULL en un valor predeterminado que se pueda ordenar o comparar:

-- Treat NULL last_login_at as the epoch:
SELECT * FROM users
ORDER BY COALESCE(last_login_at, '1970-01-01') DESC;

NULLIF: la inversa

NULLIF(a, b) devuelve NULL cuando a = b; en caso contrario, devuelve a:

-- Treat 0 as missing so AVG ignores it:
SELECT AVG(NULLIF(price, 0)) FROM products;

-- Convert empty string to NULL on insert:
INSERT INTO contacts (phone) VALUES (NULLIF(:phone, ''));

CASE para valores predeterminados condicionales

CASE es la alternativa de propósito general cuando COALESCE no ofrece suficiente flexibilidad:

SELECT id,
  CASE
    WHEN status IS NULL OR status = '' THEN 'unknown'
    WHEN status = 'A' THEN 'active'
    ELSE status
  END AS status_label
FROM users;

NULL en CHECK y las restricciones

Una restricción CHECK se cumple cuando la condición es NULL. Sea explícito si necesita prohibir NULL:

CREATE TABLE prices (
  amount NUMERIC(10,2),
  CHECK (amount > 0)        -- amount = NULL passes!
);

-- Better:
CREATE TABLE prices2 (
  amount NUMERIC(10,2) NOT NULL CHECK (amount > 0)
);

NULL en JOIN ON

Los pares de filas cuya clave de unión es NULL nunca coinciden: NULL = NULL es NULL. Use IS NOT DISTINCT FROM si quiere que NULL sea igual a NULL:

SELECT * FROM a JOIN b ON a.key IS NOT DISTINCT FROM b.key;

NULL y UNIQUE

SQL estándar trata los valores NULL como distintos en las restricciones UNIQUE; puede haber muchas filas NULL:

CREATE TABLE invites (
  id BIGSERIAL PRIMARY KEY,
  email VARCHAR(255) UNIQUE
);
INSERT INTO invites (email) VALUES (NULL), (NULL); -- both succeed!

Resumen de NULL y las funciones de agregación

Las funciones de agregación, excepto COUNT(*), omiten los valores NULL.

SELECT COUNT(*)            FROM users;  -- all rows
SELECT COUNT(email)        FROM users;  -- rows where email IS NOT NULL
SELECT COUNT(DISTINCT id)  FROM users;

Declare siempre NOT NULL cuando sea posible

NOT NULL es la garantía de corrección más sencilla y sólida. Añádala a todas las columnas que nunca deban estar vacías.

Resumen

La gestión de NULL es la mayor fuente de errores sutiles en SQL.

  • Compruebe con IS NULL
  • Reemplace con COALESCE
  • Convierta valores centinela en NULL con NULLIF
  • Use NOT NULL de forma predeterminada

Comprobación rápida

¿Qué expresión devuelve email si no es NULL y, en caso contrario, el literal 'no-email'?

Preguntas frecuentes

¿La lección «IS NULL, IS NOT NULL y COALESCE» es gratis?

Sí — el texto completo de «IS NULL, IS NOT NULL y COALESCE» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Academy, actualiza a CoddyKit PRO. El curso de SQL Academy incluye 4 lecciones en total.

¿Qué aprenderé en «IS NULL, IS NOT NULL y COALESCE»?

Detecte valores NULL con IS NULL, sustitúyalos con COALESCE / NULLIF y diseñe consultas que gestionen correctamente los datos ausentes. Practicas SQL Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar SQL Academy?

No se requiere experiencia previa. SQL Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «IS NULL, IS NOT NULL y COALESCE»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de SQL Academy?

Sí. Cada lección de SQL Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Patrones LIKE y comodines
  2. IN y NOT IN para conjuntos
  3. BETWEEN para rangos
  4. IS NULL, IS NOT NULL y COALESCE
← Volver a SQL Academy