< Oracle Database < Utilisation de fonctions

La fonction DECODE correspond à une fonction (IF, EQUALS, THEN, ELSE), voire (IF,THEN,ELSIF,ELSIF,...,ELSIF,ELSE) dans son utilisation avec plus de quatre arguments.

Plusieurs utilisations sont possibles, selon le nombre de cas de figure prévues :

Nombre de testsNombre d'argumentsSyntaxe
14DECODE (Expression, Egalité, BlocTrue, BlocFalse)
26DECODE (Expression, Egalité1, BlocTrue1, Egalité2, BlocTrue2, BlocFalse)
38DECODE (Expression, Egalité1, BlocTrue1, Egalité2, BlocTrue2, Egalité3, BlocTrue3, BlocFalse)
etc... N4+2*(N-1)DECODE (Expression, Egalité1, BlocTrue1, ...................................., EgalitéN, BlocTrueN, BlocFalse)


Exemple d'utilisation

La requête suivante illustre l'utilisation de cette fonction.

--Exemple d'utilisation de la fonction DECODE

WITH Mesure AS (
   SELECT 1 MesureID,4 Capteur1,3 Capteur2,5 Capteur3,4 Capteur4,4 Capteur5 from dual union --Pour la 1ere ligne, on précise les noms des colonnes
   SELECT 2 , 4 , 1 , 5 , 51, 5 FROM DUAL UNION --Pour les lignes, on ne le refait pas
   SELECT 3 , 4 , 3 , 5 , 9 , 4 FROM DUAL UNION
   SELECT 4 , 3 , 91, 5 , 5 , 4 FROM DUAL UNION
   SELECT 5 , 4 , 1 , 5 , 5 , 5 FROM DUAL
   )
--SELECT * FROM Mesure

SELECT
MesureID
,DECODE(Capteur1, 1, 'Un', 2, 'Deux', 3, 'Trois', 4, 'Quatre', 5, 'Cinq', 'Plus que cinq') "Capteur du Jardin"
,DECODE(SIGN(Capteur2-9), 1, 'NOTABLE', 'RAS') "Capteur du parking" -- DECODE( SIGN(A-B), 1, "A>B", "A>=B") pratique pour un choix binaire
,DECODE(Capteur3, 1, 'Un', 2, 'Deux', 3, 'Trois', 4, 'Quatre', 5, 'Cinq', 'Plus que cinq') "Capteur de la Cuisine"
,DECODE(TRUNC(Capteur4/5), 0, 'Plage faible', 1, 'Plage moyenne', 'Plage forte') "Capteur du toit" -- DECODE( TRUNC(val/PAS), 0, "val entre 0 et PAS", 1, "val entre PAS et 2*PAS", "val>2*PAS") pour un choix à N plages
,DECODE(Capteur5, 1, 'Un', 2, 'Deux', 3, 'Trois', 4, 'Quatre', 5, 'Cinq', 'Plus que cinq') "Capteur du Grenier"
FROM Mesure
;

Résultat en décommentant "SELECT * FROM Mesure"

MESUREIDCAPTEUR1CAPTEUR2CAPTEUR3CAPTEUR4CAPTEUR5
143544
2415515
343594
4391554
541555

Résultat sans rien décommenter

MESUREIDCapteur du JardinCapteur du parkingCapteur de la CuisineCapteur du toitCapteur du Grenier
1QuatreRASCinqPlage faibleQuatre
2QuatreRASCinqPlage forteCinq
3QuatreRASCinqPlage moyenneQuatre
4TroisNOTABLECinqPlage moyenneQuatre
5QuatreRASCinqPlage moyenneCinq
Cet article est issu de Wikibooks. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.