Aller au contenu
Fonctions SQL

COALESCE & CASE

CASE introduit une logique « si… alors… sinon » dans une requête, COALESCE renvoie la première valeur non NULL. Ils servent à classer des lignes en catégories ou à remplacer une valeur manquante.

  • conditionnel
  • NULL
  • if
  • NULLIF
  • IIF
  • IFNULL

Syntaxe

Modèle
COALESCE(valeur1, valeur2, defaut)CASE WHEN condition1 THEN resultat1     WHEN condition2 THEN resultat2     ELSE resultat_par_defautEND

Exemple

Exemple concret
SELECT c.name AS classe,       COALESCE(t.name, 'À pourvoir') AS professeur,       CASE         WHEN t.subject IS NULL THEN 'Non défini'         WHEN t.subject = 'Mathématiques' THEN 'Sciences'         ELSE 'Lettres'       END AS poleFROM classes cLEFT JOIN teachers t ON t.id = c.teacher_idORDER BY c.id;-- Jeu de données : école-- Résultat attendu :-- 6ème A | Marie Dupont | Sciences-- 6ème B | Jean Martin | Lettres-- 5ème A | Sophie Bernard | Lettres-- 4ème A | À pourvoir | Non défini

À retenir

  1. CASE teste les conditions dans l'ordre et s'arrête à la première vraie. Sans ELSE, une ligne qui ne vérifie aucune condition reçoit NULL.
  2. NULLIF(a, b) renvoie NULL si a = b : total / NULLIF(nb, 0) évite une division par zéro.
  3. Piège : la forme simple CASE col WHEN NULL THEN … ne fonctionne jamais, car elle teste col = NULL. Utilisez CASE WHEN col IS NULL THEN …
  4. Équivalents à deux arguments : IFNULL(a, b) dans SQLite et MySQL, ISNULL(a, b) dans SQL Server. COALESCE, standard et sans limite d'arguments, est à préférer.

Voir aussi