Tema SQL
ISNULL() (SQL Server)
Sustituye NULL por un valor de respaldo (solo dos argumentos). En MySQL equivale a IFNULL(); COALESCE es la forma ANSI con varios argumentos.
Descripción
ISNULL ( expresión, reemplazo ) es idiomático en código T-SQL y tiene coste predecible frente a COALESCE en algunos planes (el optimizador puede tratarlos distinto). El tipo de retorno sigue reglas de prioridad de tipos de SQL Server: si ambos son compatibles, puede haber conversión implícita. No confundir con la función IS NULL del predicado en WHERE. Para más de dos alternativas usa COALESCE o CASE. En MySQL, IFNULL(a,b) es el análogo binario; COALESCE existe en ambos motores y es portable.
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.
ISNULL(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.
- Dos argumentos
- A diferencia de COALESCE, no acepta lista larga de expresiones.
- MySQL
- IFNULL(expr, alt) misma semántica binaria.
- Índices
- Envolver columnas en ISNULL en predicatos puede afectar selectividad e índices; valora IS NULL OR columna = valor.
Ejemplos
Ejemplo 1
SELECT nombre, ISNULL(salario, 0) AS salario_efectivo
FROM empleados;
SELECT ISNULL(fecha_baja, '1900-01-01') AS fin_contrato
FROM contratos;
Ejemplo 2
SELECT nombre,
ISNULL(NULLIF(telefono, N''), N'sin número') AS tel
FROM contactos;
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.