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.

Serveurs virtuels (VPS)
Faites le choix de la performance
  • 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;
sql

Vous 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;
sql

SQL 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;
sql

La 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);
sql

Le 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
Conseil

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é !

Cet article vous a-t-il été utile ?
Page top