0Pricing
SQL Academy · Leçon

CASE recherché ou simple

Deux façons d’écrire CASE.

CASE recherché ou simple est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 2 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.

Deux façons d’écrire CASE

SQL propose deux variantes de l’expression CASE : le CASE simple et le CASE recherché. Tous deux renvoient une valeur en fonction de conditions, mais ces conditions s’écrivent différemment.

À la fin de cette leçon, vous saurez quand choisir chaque forme et comment éviter les erreurs courantes liées à leur confusion.

CASE simple — l’idée

Un CASE simple compare une expression à une liste de valeurs. Considérez-le comme une table de correspondance : vous choisissez une colonne ou une valeur à gauche, puis vous indiquez à quoi cette valeur est égale dans chaque branche WHEN.

Syntaxe : CASE expression WHEN value1 THEN result1 WHEN value2 THEN result2 ELSE default END

SELECT
  product_name,
  category_id,
  CASE category_id
    WHEN 1 THEN 'Electronics'
    WHEN 2 THEN 'Clothing'
    WHEN 3 THEN 'Books'
    ELSE 'Other'
  END AS category_name
FROM products;

CASE simple en pratique

Ici, l’expression CASE se trouve juste après le mot-clé et la colonne status est comparée à chaque valeur WHEN par égalité. Remarquez que vous n’écrivez pas status = dans les branches WHEN : la comparaison est implicite.

SELECT
  order_id,
  status,
  CASE status
    WHEN 'pending'   THEN 'Awaiting payment'
    WHEN 'paid'      THEN 'Payment received'
    WHEN 'shipped'   THEN 'On its way'
    WHEN 'delivered' THEN 'Completed'
    ELSE 'Unknown status'
  END AS status_label
FROM orders;

CASE recherché — l’idée

Un CASE recherché ne comporte aucune expression juste après le mot-clé CASE. À la place, chaque branche WHEN contient une condition booléenne complète. Cette forme est donc beaucoup plus flexible : vous pouvez combiner différentes colonnes, vérifier des plages de valeurs ou appeler des fonctions dans chaque WHEN.

Syntaxe : CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ELSE default END

SELECT
  employee_name,
  salary,
  CASE
    WHEN salary < 30000  THEN 'Entry Level'
    WHEN salary < 60000  THEN 'Mid Level'
    WHEN salary < 100000 THEN 'Senior'
    ELSE 'Executive'
  END AS salary_band
FROM employees;

CASE recherché en pratique

Comme chaque WHEN accepte toute expression booléenne, vous pouvez combiner plusieurs colonnes dans une même branche. La base de données évalue les clauses WHEN de haut en bas et renvoie le résultat de la première branche qui vaut TRUE.

SELECT
  product_name,
  stock,
  price,
  CASE
    WHEN stock = 0              THEN 'Out of stock'
    WHEN stock < 10 AND price > 100 THEN 'Low stock — premium item'
    WHEN stock < 10             THEN 'Low stock'
    ELSE 'In stock'
  END AS availability
FROM products;

Différence structurelle clé

Le tableau ci-dessous présente la distinction fondamentale :

CASE simple — une expression après CASE, chaque WHEN vérifie l’égalité avec cette expression.
CASE recherché — aucune expression après CASE, chaque WHEN est une condition booléenne autonome.

Comme le CASE simple n’effectue que des comparaisons d’égalité, il ne peut pas gérer les plages de valeurs, les valeurs NULL ou les conditions portant sur plusieurs colonnes. Pour tout ce qui dépasse une correspondance directe de valeur, utilisez le CASE recherché.

-- Simple CASE: equality only
SELECT CASE day_number
         WHEN 1 THEN 'Monday'
         WHEN 2 THEN 'Tuesday'
         ELSE 'Other'
       END AS day_name
FROM schedule;

-- Searched CASE: any condition
SELECT CASE
         WHEN day_number BETWEEN 1 AND 5 THEN 'Weekday'
         WHEN day_number IN (6, 7)        THEN 'Weekend'
       END AS day_type
FROM schedule;

Gestion de NULL — pourquoi le CASE recherché l’emporte

Un CASE simple utilise = en interne, et NULL = NULL ne vaut jamais TRUE en SQL. Un CASE simple ne peut donc pas trouver de correspondance pour une colonne NULL. Avec un CASE recherché, vous pouvez écrire WHEN column IS NULL THEN ..., ce qui fonctionne correctement.

-- Simple CASE: NULL branch never matches
SELECT CASE manager_id
         WHEN NULL THEN 'No manager'   -- this will NEVER fire
         ELSE 'Has manager'
       END
FROM employees;

-- Searched CASE: correct NULL check
SELECT CASE
         WHEN manager_id IS NULL THEN 'No manager'
         ELSE 'Has manager'
       END AS manager_status
FROM employees;

Combiner des colonnes dans un CASE recherché

Le CASE recherché a notamment pour avantage de permettre à chaque branche WHEN de faire référence à des colonnes complètement différentes ou d’appeler des fonctions. Vous pouvez ainsi exprimer des règles métier complexes qu’un CASE simple ne peut absolument pas gérer.

SELECT
  customer_name,
  total_orders,
  total_spent,
  CASE
    WHEN total_spent > 10000 AND total_orders > 20 THEN 'VIP'
    WHEN total_spent > 5000                        THEN 'Gold'
    WHEN total_orders > 10                         THEN 'Silver'
    ELSE 'Standard'
  END AS tier
FROM customers;

Utiliser CASE dans ORDER BY

Les deux formes de CASE peuvent apparaître dans ORDER BY pour créer un ordre de tri personnalisé qui n’existe pas dans les données. Ici, un CASE simple associe des noms de priorité à des nombres afin que les lignes soient triées selon l’ordre de priorité métier plutôt que par ordre alphabétique.

SELECT ticket_id, subject, priority
FROM support_tickets
ORDER BY
  CASE priority
    WHEN 'critical' THEN 1
    WHEN 'high'     THEN 2
    WHEN 'medium'   THEN 3
    WHEN 'low'      THEN 4
    ELSE 5
  END ASC;

CASE dans les fonctions d’agrégation

Placer un CASE recherché dans SUM ou COUNT est un schéma classique d’agrégation conditionnelle, parfois appelé tableau croisé dynamique. Cela permet de produire les totaux de plusieurs catégories en un seul parcours, au lieu d’exécuter plusieurs requêtes.

SELECT
  department,
  COUNT(*) AS total_employees,
  SUM(CASE WHEN gender = 'F' THEN 1 ELSE 0 END) AS female_count,
  SUM(CASE WHEN gender = 'M' THEN 1 ELSE 0 END) AS male_count,
  SUM(CASE WHEN salary > 70000 THEN salary ELSE 0 END) AS high_earner_payroll
FROM employees
GROUP BY department;

Choisir la bonne forme

Voici une règle pratique :

Utilisez le CASE simple lorsque vous associez une seule colonne à un ensemble fixe de valeurs connues : il est plus court et plus facile à lire.
Utilisez le CASE recherché dans tous les autres cas : plages de valeurs, vérifications de NULL, logique portant sur plusieurs colonnes ou appels de fonctions dans les conditions.

En cas de doute, le CASE recherché fonctionne toujours. Vous pouvez même réécrire n’importe quel CASE simple sous la forme d’un CASE recherché, mais pas l’inverse.

-- These two queries return identical results

-- Simple CASE (concise for equality)
SELECT CASE region_code
         WHEN 'US' THEN 'United States'
         WHEN 'UK' THEN 'United Kingdom'
         ELSE 'International'
       END AS region_name
FROM sales;

-- Equivalent Searched CASE
SELECT CASE
         WHEN region_code = 'US' THEN 'United States'
         WHEN region_code = 'UK' THEN 'United Kingdom'
         ELSE 'International'
       END AS region_name
FROM sales;

Vérification rapide

Vérifiez votre compréhension du CASE simple et du CASE recherché.

Récapitulatif de la leçon

Voici ce que vous avez appris dans cette leçon :

CASE simple — placez une expression après CASE ; chaque WHEN vérifie si cette expression est égale à une valeur précise. Cette forme est idéale pour associer une seule colonne à une liste fixe de libellés.

CASE recherché — aucune expression après CASE ; chaque WHEN contient une condition booléenne complète. Cette forme prend en charge les plages de valeurs, les vérifications de NULL, la logique portant sur plusieurs colonnes et les appels de fonctions.

Les deux formes évaluent les branches de haut en bas et renvoient le résultat de la première branche TRUE. Lorsqu’aucune branche ne correspond et qu’il n’y a pas de ELSE, le résultat est NULL. Pour une flexibilité maximale, le CASE recherché est toujours le choix le plus sûr : il peut faire tout ce que le CASE simple peut faire, et davantage.

Questions Fréquemment Posées

La leçon « CASE recherché ou simple » est-elle gratuite ?

Oui — le texte complet de « CASE recherché ou simple » 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 « CASE recherché ou simple » ?

Deux façons d’écrire CASE. 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 2 sur 4.

Combien de temps prend la leçon « CASE recherché ou simple » ?

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

  1. L’expression CASE
  2. CASE recherché ou simple
  3. Regrouper et étiqueter les données
  4. CASE dans ORDER BY et les agrégations
← Retour à SQL Academy