NULLIF
Compara dos valores y devuelve NULL si son iguales.
MySQL 8.4
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
MySQL 8.4
SELECT NULLIF('SQL Academy', 'SQL Academy');Valores distintos dan el primero
MySQL 8.4
SELECT NULLIF('SQL', 'Academy');Los códigos promocionales vacíos no se cuentan
MySQL 8.4
SELECT COUNT(promo_code) AS filled,
COUNT(NULLIF(TRIM(promo_code), '')) AS with_code
FROM orders;División sin dividir entre cero
MySQL 8.4
SELECT session_id,
pages_viewed,
duration_sec,
ROUND(pages_viewed * 60 / NULLIF(duration_sec, 0), 1) AS pages_per_minute
FROM sessions
WHERE duration_sec < 20
ORDER BY session_id
LIMIT 5;Detalles
NULLIF(a, b) es una forma abreviada de CASE WHEN a = b THEN NULL ELSE a END. Casi siempre se usa para convertir un valor «vacío» en NULL: así lo omiten COUNT, AVG y COALESCE.
El segundo uso habitual es la división: x / NULLIF(y, 0) devuelve NULL en lugar de dividir entre cero. En MySQL, dividir entre 0 ya da NULL, pero en PostgreSQL da un error, así que la forma con NULLIF funciona igual en ambos SGBD.