# SQL COALESCE : ce qu’il faut savoir

La fonction SQL COALESCE() est utilisée pour déterminer la première valeur d’une liste qui n’est pas NULL. Il s’agit en quelque sorte d’une version raccourcie de l’instruction CASE.

## Qu’est-ce que SQL COALESCE() ?

Le mot-clé NULL dans [SQL](https://www.ionos.fr/digitalguide/serveur/know-how/definition-de-sql/) est utilisé pour les données qui n’ont pas de valeur. Un tel cas se présente par exemple lorsque vous ne connaissez pas (encore) une **certaine valeur dans une table** et que vous ne remplissez donc pas le champ correspondant. Cela ne signifie pas nécessairement que le champ correspondant n’a pas de valeur, mais potentiellement que vous ne la connaissez pas. Ces valeurs NULL ne sont certes pas nuisibles à première vue, mais si elles s’accumulent dans une base de données, ces dernières peuvent devenir confuses. La fonction SQL COALESCE() est utilisée pour afficher la première valeur d’une liste qui n’est pas NULL.

## SQL COALESCE() : syntaxe et conditions préalables

La syntaxe de SQL COALESCE() est très simple. Elle se présente comme suit :

```sql
COALESCE(valeur1, valeur2, …, n)
```

Vous avez besoin d’au moins deux arguments. Si tous les arguments sont à NULL, la fonction retournera également NULL.

## SQL COALESCE() : fonctionnement et exemples

Vous pouvez rapidement comprendre le fonctionnement de base à l’aide d’un exemple simple. Dans le code suivant, nous saisissons différents arguments et les faisons vérifier à l’aide de la [commande SQL](https://www.ionos.fr/digitalguide/serveur/configuration/commandes-sql/) SELECT.

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

Dans ce cas, le résultat est « 17 », car c’est la première valeur qui n’est pas NULL.

## SQL COALESCE() en combinaison avec d’autres fonctions

La fonction est nettement plus utile si vous l’exécutez en combinaison avec d’autres actions. Pour cela, imaginons une table appelée « Employés ». Celle-ci contient les colonnes « Nom », « Ville » et « Date de naissance ». Elle ressemble à ceci :

<table>
  <thead>
    <tr>
      <th><strong>Nom</strong></th>
      <th><strong>Ville</strong></th>
      <th><strong>Date de naissance</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Bruno Craillon</td>
      <td>Clermont-Ferrand</td>
      <td>10/04/1967</td>
    </tr>
    <tr>
      <td>Sabine Cholet</td>
      <td>Aix-en-Provence</td>
      <td>27/07/1989</td>
    </tr>
    <tr>
      <td>Sébastien Schmidt</td>
      <td>Mulhouse</td>
      <td></td>
    </tr>
    <tr>
      <td>Martin Breton</td>
      <td>Aix-en-Provence</td>
      <td>14/04/2001</td>
    </tr>
    <tr>
      <td>Sarah Tamion</td>
      <td></td>
      <td>02/12/2005</td>
    </tr>
  </tbody>
</table>

Deux des inscriptions ne sont pas déposées ici. Certes, Sébastien Schmidt a une date de naissance et Sarah Tamion un lieu de résidence, mais nous ne les connaissons pas à ce moment-là. Si nous voulons déterminer rapidement les champs vides, nous pouvons utiliser la fonction SQL COALESCE(). Voici le code correspondant :

```sql
SELECT Nom,
COALESCE(Ville, 'À DEMANDER') AS Ville,
COALESCE(Date de naissance, 'À DEMANDER') AS Date de naissance
FROM Employés;
```

La sortie correspondante ressemble désormais à ceci :

<table>
  <thead>
    <tr>
      <th><strong>Nom</strong></th>
      <th><strong>Ville</strong></th>
      <th><strong>Date de naissance</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Bruno Craillon</td>
      <td>Clermont-Ferrand</td>
      <td>10/04/1967</td>
    </tr>
    <tr>
      <td>Sabine Cholet</td>
      <td>Aix-en-Provence</td>
      <td>27/07/1989</td>
    </tr>
    <tr>
      <td>Sébastien Schmidt</td>
      <td>Mulhouse</td>
      <td>À DEMANDER</td>
    </tr>
    <tr>
      <td>Martin Breton</td>
      <td>Aix-en-Provence</td>
      <td>14/04/2001</td>
    </tr>
    <tr>
      <td>Sarah Tamion</td>
      <td>À DEMANDER</td>
      <td>02/12/2005</td>
    </tr>
  </tbody>
</table>

## Les fonctions similaires à SQL COALESCE()

SQL COALESCE() ressemble sur de nombreux points à l’[instruction SQL CASE](https://www.ionos.fr/digitalguide/serveur/configuration/sql-case/) ; ce n’est donc qu’une sorte de version raccourcie de cette option de requête. Le code CASE ressemble à ceci :

```sql
CASE
WHEN valeur1 IS NOT NULL THEN valeur1
WHEN valeur2 IS NOT NULL THEN valeur2
WHEN ... IS NOT NULL THEN ..
ELSE n
END
```

La fonction [ISNULL](https://www.ionos.fr/digitalguide/serveur/configuration/sql-isnull/) présente des similitudes avec SQL COALESCE(), expliquée dans cet article. Cependant, contrairement à COALESCE, ISNULL n’est évaluée qu’une seule fois et ne suit pas les règles de l’instruction CASE.

Conseil Un serveur qui s’adapte à vos besoins : avec le [serveur d’hébergement SQL](https://www.ionos.fr/cloud/hebergement-serveur-sql "Hébergement SQL pour les bases de données MSSQL, MySQL et MariaDB | IONOS") de IONOS, vous utilisez MSSQL, MySQL ou MariaDB et profitez d’un conseiller à votre écoute, de mécanismes de sécurité solides et de performances exceptionnelles !


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