Condicionalesestándar SQL

NULLIF

Devuelve NULL si dos valores son iguales y, si no, el primer valor.

Sintaxis

NULLIF(<valor>, <comparar con>)

Compara dos argumentos: si son iguales, devuelve NULL; si son distintos, el primero sin cambios. Suena raro, pero es una forma práctica de convertir un valor especial en NULL: un cero antes de dividir o una cadena vacía antes de COALESCE.

Iguales — NULL, distintos — el primer valor
SELECT NULLIF(5, 5) AS same,
NULLIF(5, 3) AS different;
samedifferent
NULL5
Dividir sin error de división por cero
SELECT 100 / NULLIF(0, 0) AS result;
result
NULL

Sin NULLIF, la consulta SELECT 100 / 0 falla con division by zero. Dividir entre NULL simplemente da NULL.

Junto con COALESCE: una cadena vacía se convierte en guion
SELECT COALESCE(NULLIF('', ''), '—') AS empty_phone,
COALESCE(NULLIF('+44 7700 900123', ''), '—') AS filled_phone;
empty_phonefilled_phone
—+44 7700 900123

Ten en cuenta

El nombre confunde: NULLIF no sustituye NULL, sino todo lo contrario: lo crea. Sustituir NULL por un valor es cosa de COALESCE.

El segundo argumento debe tener un tipo compatible con el primero: NULLIF(5, 'a') da el error invalid input syntax for type integer.

Funciones relacionadas

Más detalles en el curso