Función SQL `NVL`: ¿cómo reemplazar los valores NULL?
NVL
en SQL significa “valor nulo” y sirve para reemplazar valores nulos por valores más significativos en conjuntos de datos y bases de datos. De este modo, es posible organizar bases de datos, aumentar la claridad en análisis e informes y optimizar el rendimiento de las consultas.
¿Qué es la función SQL NVL
?
Quienes trabajan habitualmente con bases de datos y necesitan datos completos para realizar análisis conocen bien la problemática de los valores NULL. La falta de información y los huecos pueden llevar a resultados distorsionados, informes no aprovechables e imprecisiones, lo cual puede evitarse mediante el uso de SQL NVL
(Null-Value Logic). Con esta útil función se pueden remplazar columnas y campos vacíos por valores o cadenas personalizados más significativos, lo que permite mejorar la calidad y utilidad de los datos, así como el rendimiento de las bases de datos.
¿Cómo funciona SQL NVL
?
El funcionamiento de SQL NVL
es simple: basta con definir el valor con el que se quiere reemplazar los valores NULL en el resultado. La función busca entonces valores verdaderos o falsos en los registros seleccionados y reemplaza automáticamente los valores NULL que encuentre por la información deseada. Por regla general, los valores NULL en filas y columnas representan datos que faltan, por lo que no deben confundirse con un valor numérico “0” o espacios en blanco.
No obstante, ten en cuenta que SQL NVL
se usa principalmente en bases de datos ORACLE. En MySQL o SQL Server, la función NVL
se ha remplazado por la función ISNULL
. Si deseas reemplazar valores NULL en bases de datos, utiliza la función ISNULL
en SQL Server y MS ACCESS. En MySQL, utiliza las funciones IFNULL
o COALESCE
. La funcionalidad sigue siendo la misma en estos casos.
¿Quieres aprender a utilizar el popular lenguaje de programación SQL? En nuestra introducción a SQL con ejemplos tienes información básica para iniciarte en su uso.
Diferencia entre NVL
, ISNULL
e IFNULL
Dependiendo del tipo de base de datos que se utilice, es posible confundir NVL
, ISNULL
e IFNULL
. Las tres funciones son muy similares, pero no están disponibles en todas las bases de datos y sistemas de gestión de bases de datos. Nuestro resumen puede ayudarte a elegir la función correcta para reemplazar valores NULL.
La sintaxis y los parámetros
Las funciones SQL NVL
, ISNULL
e IFNULL
requieren cada una dos parámetros, que en este caso denominamos “valor1” y “valor2”:
- el valor1 especifica el conjunto de datos o la columna en la que quieres buscar y reemplazar valores NULL;
- el valor2 representa el valor por el que quieres sustituir los valores NULL en los resultados. Aquí puedes introducir información más significativa, como “Sin especificación”, “0” o “Desconocido” para eliminar huecos y espacios vacíos.
A continuación, te mostramos la sintaxis de las tres funciones.
NVL:
NVL(valor1, valor2)
sqlISNULL:
ISNULL(valor1, valor2)
sqlIFNULL:
IFNULL(valor1, valor2)
sqlLas funciones se suelen utilizar junto con SQL SELECT y FROM
, las cuales sirven para especificar los conjuntos de datos que se van a comprobar.
Diferencias entre SQL NVL, ISNULL e IFNULL
Exponemos a continuación las diferencias entre estas funciones utilizadas para manejar valores NULL:
Función SQL | Qué hace con los valores NULL | Compatibilidad |
---|---|---|
SQL NVL
|
Sustituye los valores NULL que encuentra por un valor determinado | Oracle, Db2 |
SQL ISNULL
|
Sustituye los valores NULL o las cadenas vacías por un valor determinado | SQL Server, MySQL, MS ACCESS |
SQL IFNULL
|
Sustituye los valores NULL por un valor determinado y no interpreta los espacios en blanco como valores NULL | MySQL, Google BigQuery |
Posibles usos de NVL
Reemplazar valores NULL puede ser útil cuando hay que hacer lo siguiente:
- sustituir datos de clientes o direcciones de entrega que faltan por valores legibles como “desconocido”;
- reemplazar saldos de cuentas o transacciones desconocidas por el valor numérico 0;
- cambiar valores vacíos en datos de pacientes, financieros o de producción por valores estándar o promedios;
- sustituir evaluaciones que faltan o feedback inexistente por las palabras “sin información”;
- sustituir imágenes o información que faltan por “imagen no disponible” o “no hay información disponible”.
¿Quieres gestionar datos de manera eficiente con un rendimiento fiable, una capacidad escalable y una alta disponibilidad? Si es así, apuesta por la protección de datos alemana y utiliza SQL Server Hosting de IONOS, en donde encontrarás ofertas personalizadas de servidores y hosting.
- Ancho de banda de hasta 1 Gb/s y tráfico ilimitado
- Almacenamiento SSD NVMe ultrarrápido
- Incluye: edición Plesk Web Host
Ejemplos de uso del operador SQL NVL
Para ilustrar el uso de NVL
, ISNULL
y IFNULL
, presentamos como ejemplo una tabla de clientes con columnas para dirección, edad e ID (identificación) del cliente. En ella, queremos sustituir los valores NULL que puedan figurar en “dirección” por el valor “no especificado”.
Ejemplo de SQL NVL
SELECT dirección, edad, IDcliente, NVL(dirección, 'no especificado')
FROM clientes
sqlEjemplo de SQL ISNULL
SELECT dirección, edad, Idcliente, ISNULL(dirección, 'no especificado')
FROM clientes
sqlEjemplo de SQL IFNULL
SELECT dirección, edad, Idcliente, IFNULL(dirección, 'no especificado')
FROM clientes
sqlAlternativas a SQL NVL
Las funciones NVL
, ISNULL
e IFNULL
son casi idénticas, pero para usarlas debes comprobar que estén disponibles en tu base de datos. Una alternativa, que es casi la misma entre los comandos de SQL, operadores de SQL y funciones es SQL COALESCE. COALESCE
está disponible en casi todas las aplicaciones de bases de datos y permite reemplazar los valores NULL que encuentra por un valor de sustitución.
En este caso, la sintaxis es idéntica:
COALESCE(valor1, valor2)
sql