COALESCE et NULLIF
Fournissez des valeurs par défaut et évitez les divisions par zéro.
COALESCE et NULLIF est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
Remplacer les valeurs manquantes
Détecter les NULL ne représente que la moitié du travail — vous voulez souvent les remplacer par une valeur par défaut pertinente. La fonction COALESCE de SQL fait exactement cela.
Et lorsque vous voulez créer volontairement un NULL, par exemple pour éviter une division par zéro, NULLIF est l'outil approprié. Cette leçon couvre ces deux fonctions.
-- Show a placeholder when phone is missing
SELECT name, COALESCE(phone, 'no phone on file') AS phone
FROM customers;Fonctionnement de COALESCE
COALESCE accepte un nombre quelconque d'arguments et renvoie le premier argument non NULL, de gauche à droite.
Si tous les arguments sont NULL, le résultat est NULL. Considérez cette fonction comme « utiliser ceci, ou cela, ou finalement cette valeur de repli ».
SELECT
COALESCE(NULL, NULL, 'third', 'fourth') AS a, -- 'third'
COALESCE(NULL, 42) AS b, -- 42
COALESCE(NULL, NULL) AS c; -- NULLEnchaîner les valeurs de repli
Comme COALESCE accepte de nombreux arguments, vous pouvez créer une chaîne de préférences.
Par exemple, privilégier un numéro de mobile, puis un numéro professionnel, puis un numéro fixe, et enfin un message littéral.
SELECT name,
COALESCE(mobile, work_phone, home_phone, 'unreachable') AS best_contact
FROM contacts;Valeurs par défaut dans les calculs
NULL se propage dans les opérations arithmétiques : une seule valeur manquante peut donc rendre NULL tout un calcul. Entourez l'entrée susceptible d'être NULL avec COALESCE afin de lui substituer une valeur neutre.
Ici, une remise manquante est traitée comme 0.
-- Without COALESCE, a NULL discount makes total NULL
SELECT
price - COALESCE(discount, 0) AS total
FROM line_items;Règles de typage de COALESCE
Tous les arguments de COALESCE doivent avoir des types compatibles. PostgreSQL choisit un type commun et génère une erreur s'il n'y parvient pas.
Par exemple, vous ne pouvez pas mélanger un nombre et une chaîne de texte libre sans effectuer de conversion de type : la valeur de repli doit également être un nombre.
-- OK: both integers
SELECT COALESCE(score, 0) FROM results;
-- Cast when mixing types
SELECT COALESCE(score::text, 'n/a') FROM results;Découvrir NULLIF
NULLIF(a, b) est en quelque sorte l'inverse de COALESCE : la fonction renvoie NULL lorsque a = b, et renvoie sinon a.
C'est un moyen concis de transformer une valeur « sentinelle » précise en véritable NULL.
SELECT
NULLIF(5, 5) AS a, -- NULL (equal)
NULLIF(5, 9) AS b, -- 5 (not equal)
NULLIF('', '') AS c; -- NULL (treat empty string as missing)NULLIF pour éviter la division par zéro
L'utilisation classique de NULLIF consiste à éviter les erreurs de division. Une division par 0 génère une erreur, tandis qu'une division par NULL renvoie simplement NULL.
Entourez le diviseur avec NULLIF(divisor, 0) pour transformer un plantage en NULL sans danger.
-- If total_visits is 0, this would error.
-- NULLIF turns the divisor into NULL, giving a NULL ratio instead.
SELECT
conversions / NULLIF(total_visits, 0) AS conversion_rate
FROM campaigns;Combiner NULLIF et COALESCE
NULLIF et COALESCE se combinent très bien. Utilisez NULLIF pour convertir une valeur sentinelle en NULL, puis COALESCE pour donner à ce NULL une valeur par défaut adaptée.
Ici, une note constituée d'une chaîne vide devient le texte littéral « — ».
-- Treat '' as missing, then display a dash
SELECT
COALESCE(NULLIF(note, ''), '—') AS display_note
FROM tickets;Ratio moyen fiable
Assemblez ces éléments pour obtenir une requête d'analyse robuste : protégez-vous contre la division par zéro avec NULLIF, puis affichez 0 à la place de NULL avec COALESCE.
La requête ne génère jamais d'erreur et affiche toujours un nombre propre.
SELECT
product_id,
COALESCE(returns / NULLIF(orders, 0), 0) AS return_rate
FROM product_stats;COALESCE ou IS NULL
Les deux fonctions traitent les NULL, mais répondent à des objectifs différents :
IS NULL/IS NOT NULL— vérifier la présence de valeurs manquantes dans une condition.COALESCE— remplacer une valeur dans le résultat.
Utilisez COALESCE lorsque vous façonnez les résultats, et IS NULL lorsque vous filtrez.
-- Filter (IS NULL)
SELECT * FROM customers WHERE phone IS NULL;
-- Substitute (COALESCE)
SELECT COALESCE(phone, 'unknown') FROM customers;Synthèse
Voici une référence rapide pour cette leçon :
COALESCE(a, b, c)→ le premier argument non NULL.NULLIF(a, b)→ NULL lorsque les valeurs sont égales, sinona.- Utilisez
NULLIF(divisor, 0)pour éviter la division par zéro. - Utilisez
COALESCEpour fournir des valeurs par défaut dans les calculs et les résultats.
SELECT
COALESCE(nickname, full_name, 'guest') AS display_name,
revenue / NULLIF(orders, 0) AS avg_order_value
FROM accounts;Vérification rapide
Que renvoie NULLIF(amount, 0) lorsque amount vaut 0 ?
Récapitulatif
Vous pouvez désormais remplacer les NULL par des valeurs par défaut avec COALESCE (le premier argument non NULL l'emporte) et créer volontairement des NULL avec NULLIF (NULL lorsque deux valeurs correspondent).
Vous avez vu comment éviter la division par zéro et comment enchaîner ces deux fonctions pour obtenir un résultat sûr et propre. Vous allez maintenant explorer le comportement des NULL dans COUNT, SUM et les jointures.
SELECT
COALESCE(NULLIF(comment, ''), 'no comment') AS comment,
total / NULLIF(qty, 0) AS unit_price
FROM invoices;Questions Fréquemment Posées
La leçon « COALESCE et NULLIF » est-elle gratuite ?
Oui — le texte complet de « COALESCE et NULLIF » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « COALESCE et NULLIF » ?
Fournissez des valeurs par défaut et évitez les divisions par zéro. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « COALESCE et NULLIF » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Ce que signifie vraiment NULL
- IS NULL et IS NOT NULL
- COALESCE et NULLIF
- Les valeurs NULL dans les agrégations et les jointures