Utilisation de CASE

L'expression CASE sert à évaluer plusieurs conditions et retourne une valeur unique pour chacune d'elles. Par exemple, elle permet l'affichage d'une valeur de remplacement selon la valeur d'une colonne. Cette modification est temporaire, ce qui signifie que les données ne sont en aucune façon modifiées définitivement.

L'expression CASE est composée des éléments suivants :

  • mot clé CASE ;

  • nom de colonne à transformer ;

  • clauses WHEN spécifiant les expressions à rechercher et clauses THEN spécifiant les expressions par lesquelles les remplacer ;

  • clause ELSE facultative définissant l'expression retournée si aucune opération de comparaison n'a la valeur TRUE ;

  • mot clé END ;

  • clause AS facultative définissant un alias pour l'expression CASE.

L'expression CASE est habituellement employée pour remplacer des codes ou des abréviations par des valeurs plus lisibles. L'exemple suivant utilise la fonction CASE pour modifier la présentation des catégories de la gamme de produits en vue d'en faciliter la lecture.

USE AdventureWorks;
GO
SELECT   ProductNumber, Category =
      CASE ProductLine
         WHEN 'R' THEN 'Road'
         WHEN 'M' THEN 'Mountain'
         WHEN 'T' THEN 'Touring'
         WHEN 'S' THEN 'Other sale items'
         ELSE 'Not for sale'
      END,
   Name
FROM Production.Product
ORDER BY ProductNumber;
GO

La fonction CASE est également employée pour classer des données en catégories. La requête suivante utilise la fonction CASE pour ranger les prix par catégories.

USE AdventureWorks;
GO
SELECT   ProductNumber, Name, 'Price Range' = 
      CASE 
         WHEN ListPrice =  0 THEN 'Mfg item - not for resale'
         WHEN ListPrice < 50 THEN 'Under $50'
         WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
         WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
         ELSE 'Over $1000'
      END
FROM Production.Product
ORDER BY ProductNumber ;
GO

Pour obtenir d'autres exemples, consultez CASE (Transact-SQL).