Instruction SQL CASE 

L’instruction CASE passe par des conditions et renvoie une valeur lorsque la première condition est remplie (comme une instruction COBOL Evaluate). Ainsi, si une condition est vraie, elle arrêtera de lire et renverra le résultat. Si aucune condition n’est vraie, elle renvoie la valeur dans la clause ELSE.

Si la partie ELSE n’est pas ajoutée dans l’instruction CASE et qu’aucune condition n’est vraie, elle renvoie la valeur NULL.

syntaxe:

CASE
    WHEN condition1 THEN resultat1 
    WHEN condition2 THEN resultat2
    WHEN conditionN THEN résultatN 
    ELSE resultat
END;

Base de données DB2 :

Vous trouverez ci-dessous une sélection de la table “Employé” de la base de données DB2.

ID-EmployéNom-EmployéServiceÂgePaysVille
7001robertADM25IndeChennai
7002JancyHUM35AmériqueNew York
7003BrianOPE40Chine
7004PhilDES50AmériqueBoston
7005CarmenADM47Russie
7006HélèneOPE39AngleterreLondres

Exemple 1:

Supposons que dans la table “Employé”, le premier caractère d’un numéro de service représente la division de l’organisation. Utilisez une expression CASE pour répertorier le nom complet de la division à laquelle appartient chaque employé.

SELECT ID_Employe, Nom_Employe,
       CASE SUBSTR(Service,1,1)
          WHEN 'A' THEN 'Administration'
          WHEN 'H' THEN 'Resources Humaines'
          WHEN 'D' THEN 'Design'
          WHEN 'O' THEN 'Operations'
       END AS "Departement"
   FROM Employe;
Résultat:
ID-EmployéNom-EmployéDépartement
7001robertAdministration
7002JancyRessources humaines
7003BrianOpérations
7004PhilConcevoir
7005CarmenAdministration
7006HélèneOpérations

Exemple 2 :

L’instruction SQL suivante ordonnera l’employé par Ville. Cependant, si Ville est NULL, alors trier parPays :

SELECT ID_Employe, Nom_Employe, Ville, Pays
    FROM Employe
    ORDER BY
    (CASE
        WHEN Ville IS NULL THEN Pays
        ELSE Ville
    END);
Résultat:
ID-EmployéNom-EmployéVillePays
7004PhilBostonAmérique
7001robertChennaiInde
7006HélèneLondresAngleterre
7002JancyNew YorkAmérique
7003BrianChine
7005CarmenRussie