Fonction SQL ORACLE – DECODE()

La fonction DECODE est l’une des fonctions ORACLE les plus utilisés.
La fonction DECODE est équivalente à la commande CASE (JAVA, Shell UNIX etc…). Cette fonction permet de faire des tester comme suit:

si X = C1, alors
retourner R1
sinon si X = C2, alors
retourner R2
sinon si X = C3, alors
retourner R3

sinon
retourner D

La syntaxe de DECODE est:

DECODE(X, C1, R1, C2, R2, C3, R3, ..., D)

L’argument D (valeur du dernier sinon), n’est pas obligatoire. Au cas où cet argument n’est pas mentionné, la valeur du dernier sinon est NULL.
Passons aux exemples. Dans la table COUNTRIES (schéma HR), nous voulons afficher le nom du pays et le nom de son continent selon le code REGION_ID:

SELECT
COUNTRY_NAME PAYS,
DECODE(REGION_ID,
1, 'Europe',
2, 'Amérique',
3, 'Asie',
4, 'Afrique') CONTINENT
FROM COUNTRIES;

PAYS                            CONTINENT 
------------------------------- ---------------------- 
Argentina                       Amérique
Australia                       Asie
Belgium                         Europe
Brazil                          Amérique
Canada                          Amérique
Switzerland                     Europe
China                           Asie
Germany                         Europe
Denmark                         Europe
Egypt                           Afrique
France                          Europe
India                           Asie
Italy                           Europe
Japan                           Asie
Kuwait                          Asie
Malaysia                        Asie
Mexico                          Amérique
Nigeria                         Afrique
Netherlands                     Europe
Singapore                       Asie
United Kingdom                  Europe
United States of America        Amérique
Zambia                          Afrique
Zimbabwe                        Afrique




7 commentaires

  • Houzababy

    Je ne comprends pas la dernière condition “Afrique et Moyen-Orient”. Je ne savais pas que le moyen orient était un continent ?

  • Admin

    C’est corrigé maintenant

  • dede

    faut changer le decode aussi sinon c’est faux .. on peut pas avoir juste “Afrique” avec le decode actuel qui indique “Afrique et Moyen-Orient”

  • Zanku

    Bonjour, une petite présentation de la table avec les valeurs de REGION_ID pourrait être appréciable pour la compréhension des plus néophytes 😉

  • Zanku

    Bonjour, merci pour les explications.
    Une petite présentation de la table avec les valeurs de REGION_ID pourrait être appréciable pour les plus néophytes, histoire de bien comprendre la conception du champ CONTINENT. 😉

  • Farid Zimkin

    Pourquoi n’y a-t-il pas l’Océanie ? J’habite en Australie et je me sens discriminé et oppressé par cet oubli.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *