# La funzione SQL NVL per sostituire i valori NULL

SQL `NVL` sta per “Null Value”, ossia valore nullo, e serve a sostituire i valori NULL in record di dati e database **con altri valori non nulli**. In questo modo puoi ridurre le dimensioni dei database, migliorare la leggibilità di analisi e rapporti, oltre che ottimizzare le prestazioni delle tue query di ricerca.

## Che cos’è la funzione SQL `NVL`?

Gli amministratori e le amministratrici che lavorano regolarmente con i database e che necessitano di record di dati completi per le analisi conoscono il problema posto dai valori NULL. La mancanza di informazioni e le lacune possono causare risultati distorti, rapporti inutilizzabili e imprecisioni. La soluzione del problema si chiama SQL `NVL`. Il nome della funzione sta per “Null-Value Logic” ed è uno strumento per aiutarti a **sostituire colonne e campi vuoti con altri valori o sequenze di caratteri significativi e definiti dall’utente**. Questa funzione permette di migliorare la qualità e la fruibilità dei tuoi record di dati e quindi anche l’efficienza e le prestazioni dei database.

## Il funzionamento di SQL `NVL`

Il principio di funzionamento di `NVL` è semplice: con SQL `NVL` definisci il valore che deve sostituire i valori NULL nei tuoi risultati. La funzione controlla i record di dati selezionati alla ricerca di valori veri o falsi e **sostituisce automaticamente i valori NULL trovati** con le informazioni desiderate. I valori NULL sono di norma dati mancanti in righe e colonne. Non devono quindi essere confusi con un valore “0” numerico o con spazi vuoti.

**Attenzione**: SQL `NVL` è utilizzata **prevalentemente in database ORACLE**. In MySQL o in SQL Server la funzione `NVL` è stata sostituita dalla funzione `ISNULL`. Se invece vuoi sostituire i valori NULL in [database](https://www.ionos.it/digitalguide/hosting/tecniche-hosting/database/) SQL Server e MS ACCESS, utilizza la funzione `ISNULL`. In MySQL utilizza invece la funzione `IFNULL` o `COALESCE`. Il funzionamento è comunque lo stesso.

Consiglio Impara le nozioni principali e le possibili applicazioni di un linguaggio di programmazione e per database ampiamente diffuso come [SQL](https://www.ionos.it/digitalguide/server/know-how/che-cose-sql/). La nostra [introduzione a SQL mediante esempi](https://www.ionos.it/digitalguide/server/configurazione/introduzione-a-sql-mediante-esempi/) ti sarà utile per entrare nel mondo di SQL.

## Differenze fra `NVL`, `ISNULL` e `IFNULL`

A seconda del tipo di database può essere facile fare confusione fra `NVL`, `ISNULL` e `IFNULL`. Queste tre funzioni sono molto simili, ma **non sono disponibili in tutti i database e in tutti i [sistemi di gestione di base di dati](https://www.ionos.it/digitalguide/hosting/tecniche-hosting/sistema-di-gestione-di-base-di-dati-dbms/)**. La nostra panoramica ti aiuterà a scegliere la funzione giusta per sostituire i valori NULL.

### Spiegazione di sintassi e parametri

Ciascuna delle funzioni SQL `NVL`, `ISNULL` e `IFNULL` **richiede due parametri** che definiamo qui come “Valore1” e “Valore2”:

- **Valore1**: definisce il record di dati o la colonna in cui vuoi trovare e sostituire i valori NULL.
- **Valore2**: indica il valore con cui vuoi sostituire i valori NULL nei risultati. Qui puoi inserire informazioni significative come “Dato non disponibile”, “0” oppure “Sconosciuto” per eliminare le lacune e gli spazi vuoti.

Nelle parti seguenti trovi la sintassi per ciascuna delle tre funzioni.

**NVL**:

```sql
NVL(Valore1, Valore2)
```

**ISNULL**:

```sql
ISNULL(Valore1, Valore2)
```

**IFNULL**:

```sql
IFNULL(Valore1, Valore2)
```

Di solito queste funzioni sono utilizzate in combinazione con [SQL SELECT](https://www.ionos.it/digitalguide/server/configurazione/sql-select/) e `FROM`, che ti permettono di definire i record di dati da controllare.

### Differenze fra SQL NVL, ISNULL e IFNULL

Queste funzioni per la gestione dei valori NULL sono molto simili e si differenziano per le seguenti caratteristiche:

<table>
  <thead>
    <tr>
      <th>Funzione SQL</th>
      <th>Gestione dei valori NULL</th>
      <th>Compatibilità</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>SQL `NVL`</td>
      <td>Sostituisce i valori NULL trovati con un valore desiderato</td>
      <td>Oracle, Db2</td>
    </tr>
    <tr>
      <td>SQL `ISNULL`</td>
      <td>Sostituisce valori NULL o stringhe vuote con il valore desiderato</td>
      <td>SQL Server, MySQL, MS ACCESS</td>
    </tr>
    <tr>
      <td>SQL `IFNULL`</td>
      <td>Sostituisce valori NULL con il valore desiderato e non interpreta lo spazio vuoto come valore NULL</td>
      <td>MySQL, Google BigQuery</td>
    </tr>
  </tbody>
</table>

## Possibilità di applicazione di `NVL`

La sostituzione di valori NULL è utile per le applicazioni più svariate. Alcune di queste sono:

- Sostituzione di dati mancanti dei clienti o di indirizzi di consegna con valori leggibili come “sconosciuto”
- Sostituzione di saldi dei conti sconosciuti o transazioni non note con il valore numerico 0
- Sostituzione di valori vuoti per dati dei pazienti, dati finanziari o dati di produzione con valori standard e valori medi
- Sostituzione di valutazioni mancanti o feedback assenti con “Dato non disponibile”
- Sostituzione di immagini o informazioni mancanti con “Immagine mancante” o “Informazioni non disponibili”

Consiglio Cerchi un sistema di gestione dei dati efficiente, dalle prestazioni affidabili, con efficienza scalabile e sicuro in caso di anomalie? Allora utilizza l’[hosting SQL server](https://www.ionos.it/cloud/sql-server-hosting "Hosting SQL server di IONOS") di IONOS con soluzioni personalizzate per server e hosting, conformi alle normative europee sulla protezione dei dati.

## Esempi pratici per l’operatore SQL `NVL`

Per descrivere meglio l’uso di `NVL`, `ISNULL` e `IFNULL`, nelle parti seguenti trovi un esempio pratico di applicazione di ciascuna funzione, basato su una tabella clienti con colonne per indirizzo, età e ID cliente. In questi esempi vogliamo sostituire gli eventuali valori NULL nella colonna “Indirizzo” con il valore “Dato non disponibile”.

### Esempio per SQL `NVL`

```sql
SELECT  Indirizzo, Età, IDcliente, NVL(Indirizzo, 'Dato non disponibile')
FROM  clienti
```

### Esempio per SQL `ISNULL`

```sql
SELECT  Indirizzo, Età, IDcliente, ISNULL(Indirizzo,  'Dato non disponibile')
FROM  clienti
```

### Esempio per SQL `IFNULL`

```sql
SELECT  Indirizzo, Età, IDcliente, IFNULL(Indirizzo,  'Dato non disponibile')
FROM  clienti
```

## Alternative a SQL `NVL`

Le funzioni `NVL`, `ISNULL` e `IFNULL` sono praticamente identiche: devi solo controllare che la funzione sia disponibile per il database che stai utilizzando. Un’ulteriore alternativa quasi identica tra i [comandi SQL](https://www.ionos.it/digitalguide/server/configurazione/comandi-sql/), gli [operatori SQL](https://www.ionos.it/digitalguide/server/configurazione/operatori-sql/) e le funzioni è [SQL COALESCE](https://www.ionos.it/digitalguide/server/configurazione/sql-coalesce/). `COALESCE` è disponibile **in quasi tutte le applicazioni di database** e permette di cambiare i valori NULL trovati con un valore sostitutivo.

Anche la sua sintassi è quasi identica alle altre:

```sql
COALESCE(Valore1, Valore2)
```


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