Accéder au contenu principal

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.