Tema SQL
IFNULL() (MySQL / MariaDB)
Devuelve el primer argumento si no es NULL; en caso contrario devuelve el segundo. Equivalente conceptual a COALESCE de dos argumentos o a ISNULL en SQL Server.
Descripción
IFNULL(expr, reemplazo) simplifica sustituciones de NULL en listas de columnas y expresiones calculadas. A diferencia de COALESCE estándar (varargs), IFNULL solo admite dos valores; COALESCE en MySQL acepta N argumentos y es ANSI SQL. Usa IFNULL cuando el equipo ya lo usa de forma homogénea; para código portable prefiere COALESCE. El tipo de retorno puede promover tipos según reglas del motor (p. ej. mezclar entero y cadena). En índices y WHERE, envolver columnas en IFNULL puede impedir uso de índice: valora columnas generadas o filtros explícitos IS NULL.
Estructura general
Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.
IFNULL(expresión, valor_si_null)
Componentes
Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.
- Primer argumento
- Si no es NULL, es el resultado de la función.
- Segundo argumento
- Valor sustituto cuando el primero es NULL.
- COALESCE
- Alternativa estándar con más de dos expresiones.
Ejemplos
Ejemplo 1
SELECT nombre, IFNULL(salario, 0) AS salario_efectivo
FROM empleados;
Ejemplo 2
SELECT nombre, IFNULL(telefono, 'sin teléfono') AS contacto
FROM clientes;
Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.