ISNULL
y para qué se usa?
ISNULL
es una función que evalúa una expresión y, si esta es NULL
, devuelve el valor especificado como reemplazo. Si la expresión no es NULL
, devuelve el valor original. De esta forma, se asegura que no se devuelvan valores nulos en la salida de consultas, lo cual es útil para presentar datos limpios y completos.
Se usa en escenarios como:
NULL
con mensajes personalizados o valores predeterminados.
ISNULL
ISNULL ( expression, replacement_value )
expression
: La expresión que se desea evaluar (por ejemplo, una columna de una tabla).
replacement_value
: El valor que se devuelve si expression
es NULL
. Debe ser del mismo tipo de datos que expression
o convertible a este tipo.
ISNULL
NULL
con un valor predeterminado
Supongamos que tienes una tabla Empleados
con la columna Correo
y algunos empleados no tienen correo registrado (NULL
). Para mostrar el texto 'No especificado'
en lugar de NULL
:
SELECT Nombre, ISNULL(Correo, 'No especificado') AS Correo
FROM Empleados;
Resultado:
Nombre | Correo
-----------|------------------
Ana | ana@gmail.com
Luis | No especificado
Juan | juan@mail.com
La función ISNULL
reemplaza NULL
en la columna Correo
con el texto 'No especificado'
.
ISNULL
en cálculos
Si tienes una tabla Ventas
con la columna Descuento
, y algunos registros tienen NULL
en Descuento
, puedes reemplazar NULL
con 0 para asegurar que no afecte los cálculos:
SELECT Producto, Precio, ISNULL(Descuento, 0) AS Descuento,
Precio - ISNULL(Descuento, 0) AS PrecioFinal
FROM Ventas;
Resultado:
Producto | Precio | Descuento | PrecioFinal
-----------|--------|-----------|-------------
Laptop | 1000 | 100 | 900
Tablet | 500 | 0 | 500
Smartphone | 800 | 50 | 750
En este ejemplo, ISNULL
convierte NULL
en Descuento
a 0, asegurando que el cálculo de Precio - Descuento
no falle.
ISNULL
Cuando se concatenan cadenas de texto, un valor NULL
puede provocar que toda la cadena resultante también sea NULL
. Puedes evitar esto usando ISNULL
:
SELECT ISNULL(Nombre, 'Desconocido') + ' ' + ISNULL(Apellido, '') AS NombreCompleto
FROM Empleados;
Resultado:
NombreCompleto
-------------------
Ana García
Luis López
Desconocido Martínez
Esto garantiza que las partes nulas de Nombre
o Apellido
no afecten la cadena completa.
NULL
en funciones de agregación
Si usas funciones de agregación como SUM
o AVG
, y algunas filas tienen valores nulos, puedes usar ISNULL
para reemplazarlos:
SELECT SUM(ISNULL(Salario, 0)) AS TotalSalarios
FROM Empleados;
Esto asegura que las filas con Salario
igual a NULL
no se excluyan del total, reemplazando NULL
con 0 antes de sumar.
ISNULL
en cláusulas ORDER BY
Si quieres ordenar registros, pero algunos valores son NULL
y deseas tratarlos como vacíos:
SELECT Nombre, ISNULL(Ciudad, '') AS Ciudad
FROM Empleados
ORDER BY ISNULL(Ciudad, '');
Esto evita que los valores NULL
se presenten de manera desordenada y los trata como cadenas vacías.
NULL
con valores calculados
Puedes usar ISNULL
para calcular un valor alternativo dinámico si se encuentra un NULL
:
SELECT Nombre, ISNULL(Comision, Salario * 0.05) AS ComisionCalculada
FROM Empleados;
En este caso, si Comision
es NULL
, se calcula un valor basado en el 5% del Salario
.
ISNULL
con otras funciones de evaluación
Puedes usar ISNULL
junto con funciones como CASE
o COALESCE
para escenarios más complejos:
SELECT Nombre,
CASE
WHEN ISNULL(Ciudad, '') = '' THEN 'No especificada'
ELSE Ciudad
END AS Ubicacion
FROM Empleados;
Esto evalúa si Ciudad
es NULL
o una cadena vacía, y devuelve un mensaje personalizado ('No especificada'
).
ISNULL
y COALESCE
ISNULL
: Permite solo dos argumentos y devuelve el primer argumento si no es NULL
, de lo contrario, devuelve el segundo.
COALESCE
: Acepta múltiples argumentos y devuelve el primer valor no nulo entre ellos. Es más flexible, pero ISNULL
puede ser más rápido en ciertos escenarios.
Por ejemplo:
SELECT COALESCE(NULL, NULL, 'ValorPredeterminado') AS Resultado;
Resultado:
Resultado
-------------
ValorPredeterminado
ISNULL
devuelve un valor con el mismo tipo de datos que el primer argumento (expression
). Si expression
es de tipo INT
, el resultado también será INT
.
COALESCE
, ISNULL
no es compatible con más de dos argumentos. Si necesitas evaluar múltiples valores, usa COALESCE
.
ISNULL
. Por ejemplo, si el segundo argumento tiene un tipo de datos diferente al primero, puede ocurrir una conversión automática que afecte el resultado.
Para más información sobre ISNULL
, consulta la documentación oficial de Microsoft.
Jorge García
Fullstack developer