NULLIF
Compara dos valores y devuelve NULL si son iguales.
PostgreSQL 17.9
NULLIF(value_1, value_2)- value_1
- Valor que se devuelve si los argumentos son distintos
- value_2
- Valor con el que se compara value_1
Valor devuelto
NULL si los argumentos son iguales; si no, value_1
Ejemplos
Valores iguales dan NULL
PostgreSQL 17.9
SELECT NULLIF('SQL Academy', 'SQL Academy');Evitar la división entre cero
PostgreSQL 17.9
SELECT 100 / NULLIF(0, 0) AS result;Los códigos promocionales vacíos no se cuentan
PostgreSQL 17.9
SELECT COUNT(promo_code) AS not_null,
COUNT(NULLIF(promo_code, '')) AS filled
FROM orders;Páginas por minuto sin dividir entre cero
PostgreSQL 17.9
SELECT session_id,
pages_viewed,
duration_sec,
ROUND(pages_viewed * 60.0 / NULLIF(duration_sec, 0), 1) AS pages_per_minute
FROM sessions
ORDER BY duration_sec
LIMIT 5;Detalles
Dos usos habituales: evitar la división entre cero — x / NULLIF(y, 0) devuelve NULL en lugar de un error — y convertir las cadenas vacías en NULL — NULLIF(column, ''), para que COUNT las omita y COALESCE las sustituya.