# SQL COALESCE(): come determinare valori che non sono NULL

La funzione SQL COALESCE() è usata per determinare il primo valore di una lista che non è NULL. È pertanto una versione ridotta di una relativa istruzione CASE.

## Cos’è SQL COALESCE()?

In [SQL](https://www.ionos.it/digitalguide/server/know-how/che-cose-sql/) la parola chiave NULL rappresenta i dati che non hanno un valore. Ad esempio, quando **non si conosce (ancora) un determinato valore** in una tabella e quindi non si compila il relativo campo. Non significa necessariamente che il campo non abbia un valore, ma semplicemente che non è noto. A prima vista questi valori NULL non fanno nulla di male, ma possono rendere un database poco chiaro. La funzione SQL COALESCE() è quindi utilizzata per restituire il primo valore non NULL di una lista.

## Sintassi e prerequisiti

La sintassi di SQL COALESCE() è piuttosto semplice. Si presenta come segue:

```sql
COALESCE(valore1, valore2, …, n)
```

Servono almeno due argomenti. Se tutti gli argomenti hanno il valore NULL, anche alla fine viene restituito NULL.

## Esempio di funzionamento

Ti illustriamo il funzionamento di base ricorrendo a un semplice esempio. Nel codice seguente inseriamo diversi argomenti e li controlliamo con il [comando SQL](https://www.ionos.it/digitalguide/server/configurazione/comandi-sql/) SELECT.

```sql
SELECT COALESCE(NULL, NULL, NULL, 17, 49, NULL, 13, 15, 14, 15);
```

In questo caso l’output è “17”, perché è il primo valore che non è NULL.

## La funzione in combinazione

La funzione è molto più utile se viene eseguita in combinazione con altre azioni. Prendiamo una tabella chiamata “Collaboratori” che contiene le colonne “Nome”, “Residenza” e “Data di nascita”. Si presenta come segue:

<table>
  <thead>
    <tr>
      <th><strong>Nome</strong></th>
      <th><strong>Residenza</strong></th>
      <th><strong>Data di nascita</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Pietro Mancini</td>
      <td>Napoli</td>
      <td>10.04.1967</td>
    </tr>
    <tr>
      <td>Sabina Rossi</td>
      <td>Napoli</td>
      <td>27.07.1989</td>
    </tr>
    <tr>
      <td>Sebastiano Russo</td>
      <td>Bolzano</td>
      <td></td>
    </tr>
    <tr>
      <td>Marco Innocenti</td>
      <td>Napoli</td>
      <td>14.04.2001</td>
    </tr>
    <tr>
      <td>Sara Verdi</td>
      <td></td>
      <td>02.12.2005</td>
    </tr>
  </tbody>
</table>

Qui mancano due voci. Sicuramente Sebastiano Russo ha una data di nascita e Sara Verdi ha una residenza, ma al momento non conosciamo queste informazioni. Se vogliamo indicare la mancanza di questi dati possiamo usare la funzione SQL COALESCE(). Di seguito il codice:

```sql
SELECT nome,
COALESCE(residenza, 'CHIEDERE') AS residenza,
COALESCE(data di nascita, 'CHIEDERE') AS data di nascita
FROM collaboratore;
```

L’output corrispondente si presenta come segue:

<table>
  <thead>
    <tr>
      <th><strong>Nome</strong></th>
      <th><strong>Residenza</strong></th>
      <th><strong>Data di nascita</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Pietro Mancini</td>
      <td>Napoli</td>
      <td>10.04.1967</td>
    </tr>
    <tr>
      <td>Sabina Rossi</td>
      <td>Napoli</td>
      <td>27.07.1989</td>
    </tr>
    <tr>
      <td>Sebastiano Russo</td>
      <td>Bolzano</td>
      <td>CHIEDERE</td>
    </tr>
    <tr>
      <td>Marco Innocenti</td>
      <td>Napoli</td>
      <td>14.04.2001</td>
    </tr>
    <tr>
      <td>Sara Verdi</td>
      <td>CHIEDERE</td>
      <td>02.12.2005</td>
    </tr>
  </tbody>
</table>

## Funzioni simili a SQL COALESCE()

SQL COALESCE() presenta sovrapposizioni con un’[istruzione CASE](https://www.ionos.it/digitalguide/server/configurazione/sql-case/) ed è soltanto una versione abbreviata di questa opzione di interrogazione. Il codice CASE si presenterebbe come segue:

```sql
CASE
WHEN valore1 IS NOT NULL THEN valore1
WHEN valore2 IS NOT NULL THEN valore2
WHEN … IS NOT NULL THEN …
ELSE n
END
```

Anche la funzione ISNULL è simile a SQL COALESCE(). A differenza della funzione trattata qui, ISNULL viene valutata solo una volta e non segue a sua volta le regole di CASE.

Consiglio Un server proprio come lo vuoi tu: con l’[hosting SQL Server](https://www.ionos.it/cloud/sql-server-hosting) di IONOS utilizzi MSSQL, MySQL o MariaDB e puoi contare su una consulenza personalizzata, solidi meccanismi di sicurezza e prestazioni eccezionali.


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