NULLIF e IIF
Parte de la sección Más allá de lo básico del Journey de SQL de Coddy — lección 4 de 27.
Dos ayudantes condicionales más, ambos pequeños y útiles.
NULLIF(a, b) devuelve NULL cuando a = b, de lo contrario devuelve a. El uso clásico es protegerse contra la división por cero:
SELECT total / NULLIF(count, 0) AS average
FROM statsSi count es cero obtenemos NULL en lugar de un error.
IIF(cond, a, b) es un atajo de dos ramas para CASE WHEN cond THEN a ELSE b END. Recurre a él cuando la elección sea binaria; recurre a CASE cuando haya más ramas.
Desafío
FácilTablas y columnas disponibles:
<strong>matches</strong>:<strong>id</strong>,<strong>shots</strong>,<strong>goals</strong>
Para cada partido devuelve:
idconversion:goals * 1.0 / shots, peroNULLcuandoshotses0(usaNULLIF)verdict:'win'cuandogoals > 0, de lo contrario'no goals'(usaIIF)
Ordena por id.
Hoja de referencia
NULLIF(a, b) devuelve NULL cuando a = b, de lo contrario devuelve a. Útil para evitar la división por cero:
SELECT total / NULLIF(count, 0) AS average
FROM statsIIF(cond, a, b) es un atajo para un CASE de dos ramas:
SELECT IIF(goals > 0, 'win', 'no goals') AS verdict
FROM matchesPruébalo tú mismo
SELECT id,
-- conversión usando NULLIF
-- veredicto usando IIF
FROM matches
ORDER BY id
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.