Les expressions CASE peuvent être utilisées dans les instructions SQL pour faciliter la manipulation de la représentation des données d'une table. Il s'agit d'expressions conditionnelles puissantes de même nature que les instructions CASE de certains langages de programmation.
SELECT DEPTNAME, CASE DEPTNUMB WHEN 10 THEN 'Marketing' WHEN 15 THEN 'Research' WHEN 20 THEN 'Development' WHEN 38 THEN 'Accounting' ELSE 'Sales' END AS FUNCTION FROM ORG
Voici le résultat obtenu :
DEPTNAME FUNCTION -------------- ----------- Head Office Marketing New England Research Mid Atlantic Development South Atlantic Accounting Great Lakes Sales Plains Sales Pacific Sales Mountain Sales
SELECT LASTNAME, WORKDEPT FROM EMPLOYEE WHERE(CASE WHEN BONUS+COMM=0 THEN NULL ELSE SALARY/(BONUS+COMM) END ) > 10
Dans l'exemple suivant, le calcul du ratio des salaires du service 20 par rapport au total de tous les salaires est effectué à l'aide d'une expression CASE :
SELECT CAST(CAST (SUM(CASE WHEN DEPT = 20 THEN SALARY ELSE 0 END) AS DECIMAL(7,2))/ SUM(SALARY) AS DECIMAL (3,2)) FROM STAFF
Le résultat obtenu est 0,11. Les fonctions de transtypage (CAST) permettent de garder la précision du résultat.
CASE WHEN X<0 THEN -1 WHEN X=0 THEN 0 WHEN X>0 THEN 1 END
L'expression précédente donne le même résultat que la fonction SIGN définie par l'utilisateur dans le schéma SYSFUN.