La fonction SQL COALESCE() est utilisée pour dé­ter­mi­ner la première valeur d’une liste qui n’est pas NULL. Il s’agit en quelque sorte d’une version rac­cour­cie de l’ins­truc­tion CASE.

Qu’est-ce que SQL COALESCE() ?

Le mot-clé NULL dans SQL est utilisé pour les données qui n’ont pas de valeur. Un tel cas se présente par exemple lorsque vous ne con­nais­sez pas (encore) une certaine valeur dans une table et que vous ne rem­plis­sez donc pas le champ cor­res­pon­dant. Cela ne signifie pas né­ces­sai­re­ment que le champ cor­res­pon­dant n’a pas de valeur, mais po­ten­tiel­le­ment que vous ne la con­nais­sez pas. Ces valeurs NULL ne sont certes pas nuisibles à première vue, mais si elles s’ac­cu­mu­lent 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.

Serveurs virtuels (VPS)
VPS éco­no­miques sur serveurs Dell En­ter­prise
  • 1 Gbit/s de bande passante et trafic illimité
  • Dis­po­ni­bi­lité de 99,99 % et cer­ti­fi­ca­tion ISO
  • As­sis­tance 24/7 primée pour sa qualité et con­seil­ler personnel

SQL COALESCE() : syntaxe et con­di­tions préa­lables

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

COALESCE(valeur1, valeur2, …, n)
sql

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

SQL COALESCE() : fonc­tion­ne­ment et exemples

Vous pouvez ra­pi­de­ment com­prendre le fonc­tion­ne­ment de base à l’aide d’un exemple simple. Dans le code suivant, nous sai­sis­sons dif­fé­rents arguments et les faisons vérifier à l’aide de la commande SQL SELECT.

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

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

SQL COALESCE() en com­bi­nai­son avec d’autres fonctions

La fonction est nettement plus utile si vous l’exécutez en com­bi­nai­son 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 :

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

Deux des ins­crip­tions 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 con­nais­sons pas à ce moment-là. Si nous voulons dé­ter­mi­ner ra­pi­de­ment les champs vides, nous pouvons utiliser la fonction SQL COALESCE(). Voici le code cor­res­pon­dant :

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

La sortie cor­res­pon­dante ressemble désormais à ceci :

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

Les fonctions si­mi­laires à SQL COALESCE()

SQL COALESCE() ressemble sur de nombreux points à l’ins­truc­tion SQL CASE ; ce n’est donc qu’une sorte de version rac­cour­cie de cette option de requête. Le code CASE ressemble à ceci :

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

La fonction ISNULL présente des si­mi­li­tudes avec SQL COALESCE(), expliquée dans cet article. Cependant, con­trai­re­ment à COALESCE, ISNULL n’est évaluée qu’une seule fois et ne suit pas les règles de l’ins­truc­tion CASE.

Conseil

Un serveur qui s’adapte à vos besoins : avec le serveur d’hé­ber­ge­ment SQL de IONOS, vous utilisez MSSQL, MySQL ou MariaDB et profitez d’un con­seil­ler à votre écoute, de mé­ca­nismes de sécurité solides et de per­for­mances ex­cep­tion­nelles !

Aller au menu principal