# 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](https://www.ionos.es/digitalguide/hosting/cuestiones-tecnicas/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.

Consejo ¿Quieres aprender a utilizar el popular lenguaje de programación [SQL](https://www.ionos.es/digitalguide/servidores/know-how/que-es-sql/)? En nuestra [introducción a SQL con ejemplos](https://www.ionos.es/digitalguide/servidores/configuracion/sql-introduccion-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](https://www.ionos.es/digitalguide/hosting/cuestiones-tecnicas/sistema-gestor-de-base-de-datos-sgbd/). 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**:

```sql
NVL(valor1, valor2)
```

**ISNULL**:

```sql
ISNULL(valor1, valor2)
```

**IFNULL**:

```sql
IFNULL(valor1, valor2)
```

Las funciones se suelen utilizar junto con [SQL SELECT](https://www.ionos.es/digitalguide/servidores/configuracion/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:

<table>
  <thead>
    <tr>
      <th>Función SQL</th>
      <th>Qué hace con los valores NULL</th>
      <th>Compatibilidad</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>SQL `NVL`</td>
      <td>Sustituye los valores NULL que encuentra por un valor determinado</td>
      <td>Oracle, Db2</td>
    </tr>
    <tr>
      <td>SQL `ISNULL`</td>
      <td>Sustituye los valores NULL o las cadenas vacías por un valor determinado</td>
      <td>SQL Server, MySQL, MS ACCESS</td>
    </tr>
    <tr>
      <td>SQL `IFNULL`</td>
      <td>Sustituye los valores NULL por un valor determinado y no interpreta los espacios en blanco como valores NULL</td>
      <td>MySQL, Google BigQuery</td>
    </tr>
  </tbody>
</table>

## 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”.

Consejo ¿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](https://www.ionos.es/cloud/sql-server-hosting) de IONOS, en donde encontrarás ofertas personalizadas de servidores y hosting.

## 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`

```sql
SELECT  dirección, edad, IDcliente, NVL(dirección,  'no especificado')
FROM  clientes
```

### Ejemplo de SQL `ISNULL`

```sql
SELECT  dirección, edad, Idcliente, ISNULL(dirección,  'no especificado')
FROM  clientes
```

### Ejemplo de SQL `IFNULL`

```sql
SELECT  dirección, edad, Idcliente, IFNULL(dirección,  'no especificado')
FROM  clientes
```

## Alternativas 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](https://www.ionos.es/digitalguide/servidores/configuracion/comandos-sql/), [operadores de SQL](https://www.ionos.es/digitalguide/servidores/configuracion/sql-operators/) y funciones es [SQL COALESCE](https://www.ionos.es/digitalguide/servidores/configuracion/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:

```sql
COALESCE(valor1, valor2)
```


This is a markdown version of: [https://www.ionos.es/digitalguide/servidores/configuracion/sql-nvl/](https://www.ionos.es/digitalguide/servidores/configuracion/sql-nvl/) for AI/LLM consumption.