Accéder au contenu principal
Documents
FonctionsExpressionsKeywordsDéclarationsClauses

Expression CASE MySQL

L'expression `CASE` dans MySQL est utilisée pour la logique conditionnelle dans les requêtes SQL, vous permettant de retourner des valeurs spécifiques basées sur différentes conditions. Son fonctionnement est similaire à celui d'une instruction if-else dans les langages de programmation.

Utilisation

L'expression `CASE` est utilisée pour exécuter une logique conditionnelle dans les requêtes SQL, principalement dans les clauses `SELECT`, `UPDATE` et `ORDER BY`. Il évalue les conditions dans l'ordre et renvoie une valeur spécifiée lorsque la première condition vraie est rencontrée.


CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE resultN
END;

Dans cette syntaxe, `CASE` vérifie chaque condition séquentiellement et renvoie le résultat correspondant à la première condition vraie ; si aucune n'est vraie, il renvoie le résultat `ELSE`.

Exemples

1. Utilisation des cas de base


SELECT product_name,
       CASE
           WHEN stock_quantity > 0 THEN 'In Stock'
           ELSE 'Out of Stock'
       END AS stock_status
FROM products;

Cet exemple évalue la quantité `stock_quantity` et renvoie 'In Stock' si la quantité est supérieure à zéro, sinon 'Out of Stock'.

2. Conditions multiples


SELECT employee_name,
       CASE
           WHEN salary > 50000 THEN 'High Salary'
           WHEN salary BETWEEN 30000 AND 50000 THEN 'Medium Salary'
           ELSE 'Low Salary'
       END AS salary_category
FROM employees;

Dans cette requête, l'expression `CASE` catégorise les employés en tranches de salaire, offrant un contrôle plus granulaire sur les étiquettes de sortie.

3. Utilisation de CASE dans ORDER BY


SELECT order_id, order_date
FROM orders
ORDER BY
    CASE
        WHEN order_status = 'Pending' THEN 1
        WHEN order_status = 'Shipped' THEN 2
        ELSE 3
    END;

Ici, l'expression `CASE` est utilisée pour ordonner les résultats en fonction de `order_status`, en donnant la priorité à 'Pending', suivi de 'Shipped', puis de n'importe quel autre statut.

4. Utilisation de CASE dans UPDATE


UPDATE employees
SET salary_category = 
    CASE
        WHEN salary > 50000 THEN 'High Salary'
        WHEN salary BETWEEN 30000 AND 50000 THEN 'Medium Salary'
        ELSE 'Low Salary'
    END;

Cet exemple montre comment `CASE` peut être utilisé dans une requête `UPDATE` pour définir le champ `salary_category` en fonction de différentes fourchettes de salaires.

Conseils et bonnes pratiques

  • Veillez à ce que les données soient complètes. Incluez toujours une clause `ELSE` pour traiter les cas inattendus ou nuls, afin d'améliorer la robustesse de la requête.
  • Veillez à ce que les conditions soient simples. Simplifiez les conditions dans `CASE` pour maintenir la lisibilité et réduire les erreurs.
  • Utilisez des types de données appropriés. Assurez-vous que les types de données des résultats dans les clauses `THEN` et `ELSE` sont cohérents pour éviter les erreurs.
  • Optimiser les performances. Placez les conditions réelles les plus probables en premier afin de réduire le temps d'évaluation et d'améliorer les performances de la requête.
  • Normes SQL. L'expression `CASE` de MySQL respecte les normes SQL, ce qui garantit la compatibilité entre les différentes bases de données SQL.

Amélioration de SQL pour les débutants

Acquérir les compétences SQL pour interagir avec vos données et les interroger.
Commencez à apprendre gratuitement