# La funzione SQL ISNULL(): verificare e sostituire valori NULL

ISNULL() in SQL si usa per controllare se un’espressione presenta il valore NULL. In caso affermativo, la funzione sostituisce NULL con un valore alternativo dello stesso tipo di dati.

## Cos’è ISNULL() in SQL?

Grazie allo [Structured Query Language](https://www.ionos.it/digitalguide/server/know-how/che-cose-sql/) è possibile creare tabelle e popolarle con valori. Se a un determinato campo di una tabella non assegni alcun valore, questo rimane vuoto e assume il valore NULL, il che indica l’assenza di un valore effettivo. Se desideri che **al posto di NULL venga inserito un valore alternativo** puoi utilizzare la funzione SQL ISNULL(). Questa funzione verifica innanzitutto se un’espressione è NULL e, in caso affermativo, inserisce un’espressione sostitutiva precedentemente specificata. In caso contrario, il campo conserva il valore originale.

## La sintassi della funzione

Il funzionamento di ISNULL() in SQL risulta evidente dando un’occhiata più da vicino alla sintassi della funzione:

```sql
ISNULL(espressione, valore_alternativo);
```

Prima di tutto la funzione verifica se il valore dell’espressione presa in esame è NULL. In caso affermativo restituisce il valore alternativo. In caso contrario, invece, ISNULL() in SQL restituisce l’espressione stessa. Importante: sia l’espressione che il valore alternativo devono appartenere allo **stesso tipo di dati**.

## Funzionamento di ISNULL() in SQL

ISNULL() in SQL si applica in concomitanza con un [comando SQL](https://www.ionos.it/digitalguide/server/configurazione/comandi-sql/) come `SELECT`. Negli esempi successivi mostriamo prima l’output quando il valore dell’espressione è pari a NULL e successivamente l’opzione alternativa. Il primo codice si presenta così:

```sql
SELECT ISNULL(' ', 'Questo è il valore alternativo');
```

L’output in questo caso è:

```sql
Questo è il valore alternativo
```

Nel prossimo esempio usiamo la stessa espressione. Riconoscendo che l’espressione esaminata ha un valore, il comando restituisce semplicemente quel valore.

```sql
SELECT ISNULL('Questa è l’espressione originaria', 'Questo è il valore alternativo');
```

In questo modo si ottiene il seguente output:

```sql
Questa è l’espressione originaria
```

## Esempio pratico

Per il prossimo esempio creiamo una semplice tabella “ordini”. Questa contiene le colonne “numero\_cliente”, “cognome” e “numero\_dell’ordine”:

<table>
  <thead>
    <tr>
      <th>Numero\_cliente</th>
      <th>Cognome</th>
      <th>Numero\_dell’ordine</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1326</td>
      <td>Rossi</td>
      <td>00451</td>
    </tr>
    <tr>
      <td>1288</td>
      <td>Bianchi</td>
      <td></td>
    </tr>
    <tr>
      <td>1262</td>
      <td>Rossi</td>
      <td>00318</td>
    </tr>
  </tbody>
</table>

Se desideriamo strutturare meglio la nostra tabella possiamo usare la funzione ISNULL() in SQL, in modo da sostituire il valore NULL con il segnaposto `00000`. In questo caso il codice si scrive così:

```sql
SELECT Numero_cliente,
ISNULL(Numero_dell’ordine, 00000), Numero_dell’ordine
FROM Ordini;
```

Eseguendo il codice otteniamo la seguente tabella:

<table>
  <thead>
    <tr>
      <th>Numero\_cliente</th>
      <th>Cognome</th>
      <th>Numero\_dell’ordine</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1326</td>
      <td>Rossi</td>
      <td>00451</td>
    </tr>
    <tr>
      <td>1288</td>
      <td>Bianchi</td>
      <td>00000</td>
    </tr>
    <tr>
      <td>1262</td>
      <td>Rossi</td>
      <td>00318</td>
    </tr>
  </tbody>
</table>

## Combinazione con funzioni aggregate

ISNULL() in SQL funziona anche in **combinazione con funzioni aggregate** quali [SQL AVG()](https://www.ionos.it/digitalguide/server/configurazione/sql-avg/), [SQL COUNT()](https://www.ionos.it/digitalguide/server/configurazione/sql-count/) o `SUM()`. Puoi comprendere meglio il loro funzionamento nel prossimo esempio: qui ampliamo la tabella precedente aggiungendo una colonna chiamata “valore\_dell’ordine”, con importi in euro. Di seguito trovi la tabella in questione:

<table>
  <thead>
    <tr>
      <th>Numero\_cliente</th>
      <th>Cognome</th>
      <th>Numero\_dell’ordine</th>
      <th>Valore\_dell’ordine</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1326</td>
      <td>Rossi</td>
      <td>00451</td>
      <td>300</td>
    </tr>
    <tr>
      <td>1288</td>
      <td>Bianchi</td>
      <td>00000</td>
      <td>NULL</td>
    </tr>
    <tr>
      <td>1262</td>
      <td>Rossi</td>
      <td>00318</td>
      <td>100</td>
    </tr>
  </tbody>
</table>

Se desideriamo sostituire il valore NULL con 100 e calcolare l’intero valore di tutti gli ordini, usiamo la funzione `SUM()`. In questo caso il codice da utilizzare sarà il seguente:

```sql
SELECT SUM(ISNULL(Valore_dell’ordine, 100)
FROM Ordini;
```

Si ottiene quindi il seguente output:

```sql
500
```

Il sistema sostituisce il valore NULL con 100 e quindi somma 300 + 100 + 100.

## Alternative a ISNULL() in SQL

Ci sono altre opzioni simili a ISNULL() in SQL che appartengono alle cosiddette funzioni NULL. Di questo gruppo fanno parte [SQL COALESCE()](https://www.ionos.it/digitalguide/server/configurazione/sql-coalesce/), [SQL IFNULL()](https://www.ionos.it/digitalguide/server/configurazione/sql-ifnull/) e [SQL NVL()](https://www.ionos.it/digitalguide/server/configurazione/sql-nvl/). Anche queste funzioni verificano se un valore è pari a NULL ed eventualmente lo sostituiscono con un valore alternativo.

Consiglio Trova il server più adatto alle tue esigenze! Grazie all’[hosting SQL server](https://www.ionos.it/cloud/sql-server-hosting "Hosting SQL di IONOS") di IONOS non scegli solo il database che più preferisci fra MSSQL, MySQL e MariaDB, ma approfitti anche di una consulenza specializzata, sicurezza elevata e una performance senza pari.


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