COALESCE pour les NULLs
Fait partie de la section Au-delà des bases du Journey SQL de Coddy — leçon 3 sur 27.
COALESCE retourne le premier argument qui n'est pas NULL :
COALESCE(nickname, first_name, 'Anonymous')Lit de gauche à droite et s'arrête au premier élément non nul. C'est la manière la plus propre de fournir une valeur de repli dans une requête, sans avoir besoin de CASE.
Utilisations courantes :
- Afficher
0au lieu deNULLd'uneLEFT JOIN:COALESCE(SUM(amount), 0) - Choisir le premier champ optionnel non vide :
COALESCE(mobile, home, work)
Défi
FacileTables et colonnes disponibles :
<strong>users</strong>:<strong>id</strong>,<strong>display_name</strong>,<strong>email</strong><strong>orders</strong>:<strong>user_id</strong>,<strong>amount</strong>
Retournez une ligne par utilisateur avec :
idlabel:display_names'il est défini, sinonemail, sinon'unknown'total_spent: somme desamountdes commandes de l'utilisateur ; les utilisateurs sans commande doivent afficher0(pasNULL)
Triez par id. Indice : un LEFT JOIN de users vers orders plus COALESCE(SUM(...), 0) gère les lignes manquantes.
Aide-mémoire
COALESCE retourne le premier argument non-NULL :
COALESCE(nickname, first_name, 'Anonymous')Utilisations courantes :
- Valeur d'affichage de secours :
COALESCE(mobile, home, work) - Remplacer
NULLpour les agrégats deLEFT JOIN:COALESCE(SUM(amount), 0)
Essayez vous-même
SELECT u.id,
-- label via COALESCE
-- total_spent via COALESCE(SUM(...), 0)
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.id
ORDER BY u.id
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Au-delà des bases
1Logique conditionnelle
CASE WHENCASE dans ORDER BYCOALESCE pour les NULLsNULLIF et IIFRécapitulatif - Présences