SQL CASE : définir et interroger des conditions
SQL CASE vous permet de manipuler une base de données en interrogeant certaines conditions et en affichant les résultats. L’approche de la condition CASE est similaire à l’instruction IF THEN ELSE.
Qu’est-ce que SQL CASE ?
Dans de nombreux langages de base de données et de programmation, l’instruction IF THEN ELSE est très répandue. Celle-ci exécute une action aussi longtemps qu’une certaine condition est remplie. Si cette condition n’est plus remplie, le programme correspondant quitte la boucle ou exécute une autre action. Le Structured Query Language utilise un principe similaire et met à disposition l’instruction SQL CASE. Celle-ci parcourt une liste de conditions et répond avec une certaine valeur si une condition est remplie. Si aucune condition n’est remplie, elle répond avec une valeur définie sous ELSE. S’il n’y a pas de restriction ELSE et que les conditions ne sont pas remplies, la réponse est NULL.
- Virtualisation complète avec accès root
- Trafic illimité et jusqu'à 1 Gbit/s de bande passante
- Stockage SSD NVMe rapide et édition Plesk Web Host
SQL CASE : syntaxe et fonctionnement
La syntaxe de base de SQL CASE se présente comme suit :
SELECT colonne1, colonne2, ...,
CASE
WHEN condition1 THEN résultat1
END AS nom
FROM nom_de_la_table;
sqlVous indiquez avec la commande SQL SELECT quelles colonnes doivent être prises en compte. Avec CASE, vous vérifiez la condition. Si elle s’applique (si elle est true), la valeur du résultat enregistré est affichée. END AS termine la boucle. FROM indique dans quelle table cette boucle doit être exécutée.
Avec la restriction optionnelle ELSE, la syntaxe se présente comme suit :
SELECT colonne1, colonne2, ...,
CASE
WHEN condition1 THEN résultat1
ELSE autre_resultat
END AS nom
FROM nom_de_la_table;
sqlSQL CASE : exemple de condition
Pour illustrer le fonctionnement de SQL CASE, nous créons une table simple appelée « Clients ». Nous y enregistrons un numéro de client, le nom du client, la ville et la date de la commande, le nombre d’articles commandés, ainsi que le montant payé en euros.
Numéro de client | Nom | Ville | Date | Article | Montant |
---|---|---|---|---|---|
1427 | Henri | Paris | 1/13/2024 | 14 | 634 |
1377 | Clément | Marseille | 1/19/2024 | 9 | 220 |
1212 | Petit | Marseille | 1/3/2024 | 15 | 400 |
1431 | Garcia | Biarritz | 1/19/2024 | 22 | 912 |
1118 | Simon | Rouen | 2/1/2024 | 10 | 312 |
Nous utilisons maintenant la condition pour parcourir la liste. Pour les montants supérieurs à 400 euros, un certain texte doit être édité. Il en va de même pour les montants inférieurs à 400 euros. Nous utilisons la restriction ELSE pour les commandes qui se situent exactement à 400 euros. Plusieurs conditions peuvent donc être demandées l’une après l’autre. La syntaxe appropriée pour notre exemple est la suivante :
SELECT Numéro de client, Nom, Ville, Date, Article, Montant,
CASE
WHEN Montant > 400 THEN 'Le montant est supérieur à 400 euros'
WHEN Montant < 400 THEN 'Le montant est inférieur à 400 euros'
ELSE 'Le montant est exactement de 400 euros'
END AS Détails de la commande
FROM Clients;
sqlLa sortie correspondante ressemble à ceci :
Numéro de client | Nom | Ville | Date | Article | Montant | Détails de la commande |
---|---|---|---|---|---|---|
1427 | Henri | Paris | 1/13/2024 | 14 | 634 | Le montant est supérieur à 400 euros |
1377 | Clément | Marseille | 1/19/2024 | 9 | 220 | Le montant est inférieur à 400 euros |
1212 | Petit | Marseille | 1/3/2024 | 15 | 400 | Le montant est exactement de 400 euros |
1431 | Garcia | Biarritz | 1/19/2024 | 22 | 912 | Le montant est supérieur à 400 euros |
1118 | Simon | Rouen | 2/1/2024 | 10 | 312 | Le montant est inférieur à 400 euros |
SQL CASE en combinaison avec d’autres instructions
Vous pouvez également demander les conditions au sein d’autres instructions. Dans ce qui suit, nous classons les entrées par numéro de client. Si celui-ci n’est pas indiqué (donc NULL), le nom du client doit être pris en compte à la place. Voici le code correspondant :
SELECT Numéro de client, Nom, Ville, Date, Article, Montant,
FROM Clients
ORDER BY
(CASE
WHEN Numéro de client IS NULL THEN Nom
ELSE Numéro de client
END);
sqlLe résultat est le suivant :
Numéro de client | Nom | Ville | Date | Article | Montant |
---|---|---|---|---|---|
1118 | Simon | Rouen | 2/1/2024 | 10 | 312 |
1212 | Petit | Marseille | 1/3/2024 | 15 | 400 |
1377 | Clément | Marseille | 1/19/2024 | 9 | 220 |
1427 | Henri | Paris | 1/13/2024 | 14 | 634 |
1431 | Garcia | Biarritz | 1/19/2024 | 22 | 912 |
Avec le serveur d’hébergement SQL de IONOS, vous avez le choix entre MSSQL, MySQL ou MariaDB. Profitez d’une performance exceptionnelle, d’une architecture de sécurité solide et d’un conseil personnalisé !