Condicionalesestándar SQL

COALESCE

Devuelve el primer valor de la lista que no es NULL.

Sintaxis

COALESCE(<valor1>, <valor2>, …)

Revisa los argumentos de izquierda a derecha y devuelve el primero que no es NULL. Si todos son NULL, el resultado también es NULL. Lo más habitual es usarla para poner un valor por defecto, por ejemplo: «no hay teléfono — mostrar un guion».

Datos para los ejemplos

employees

namedepartmentsalarybonusphone
Emmabackend1200300+44 7700 900123
Liambackend1000NULLNULL
Oliviafrontend1350150+44 7700 900456
Noahfrontend950NULL+44 7700 900789
Sophiadesign1200200NULL

Estas tablas ya están creadas en el entorno de pruebas y los ejemplos de abajo las usan. ¿Quieres repetirlo en tu propia base de datos? Copia el SQL.

El primer valor que no es NULL
SELECT COALESCE(NULL, NULL, 42) AS result;
result
42
Un guion en lugar de un teléfono vacío
SELECT name, COALESCE(phone, '—') AS phone
FROM employees;
namephone
Emma+44 7700 900123
Liam—
Olivia+44 7700 900456
Noah+44 7700 900789
Sophia—
NULL «se come» la aritmética
SELECT name,
salary + bonus AS without_coalesce,
salary + COALESCE(bonus, 0) AS total
FROM employees;
namewithout_coalescetotal
Emma15001500
LiamNULL1000
Olivia15001500
NoahNULL950
Sophia14001400

Cualquier operación con NULL da NULL: Liam y Noah no tienen bonus, así que sin COALESCE su total desaparecería por completo.

Ten en cuenta

Los argumentos deben ser de tipos compatibles. COALESCE(bonus, 'n/a') con un bonus numérico da error: PostgreSQL intenta convertir 'n/a' en número. Convierte a texto: COALESCE(bonus::text, 'n/a').

Una cadena vacía '' no es NULL, así que COALESCE no la sustituye. Para eso se combina con NULLIF: COALESCE(NULLIF(phone, ''), '—').

Funciones relacionadas

Más detalles en el curso