Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Fonction DECODE
Une expression DECODE remplace une valeur spécifique par une autre valeur spécifique ou une valeur par défaut, selon le résultat d’une condition d’égalité. Cette opération équivaut à utiliser une expression CASE simple ou une instruction IF-THEN-ELSE.
Syntaxe
DECODE ( expression, search, result [, search, result ]... [ ,default ] )
Ce type d’expression est utile pour remplacer des abréviations ou des codes stockés dans les tables par des valeurs commerciales pertinentes qui sont nécessaires pour les rapports.
Paramètres
- expression
-
Source de la valeur que vous souhaitez comparer, comme une colonne dans une table.
- search
-
Valeur cible comparée à l’expression source, par exemple une valeur numérique ou une chaîne de caractères. L’expression search doit correspondre à une seule valeur fixe. Vous ne pouvez pas spécifier d’expression qui correspond à une plage de valeurs, comme
age between 20 and 29
. Vous devez spécifier des paires search/result distinctes pour chaque valeur que vous souhaitez remplacer.Le type de données de toutes les instances de l’expression search doit être identique ou compatible. Les paramètres expression et search doivent aussi être compatibles.
- result
-
Valeur de remplacement que la requête renvoie lorsque l’expression correspond à la valeur de recherche. Vous devez inclure au moins une paire search/result dans l’expression DECODE.
Les types de données de toutes les instances de l’expression result doivent être identiques ou compatibles. Les paramètres result et default doivent aussi être compatibles.
- default
-
Valeur par défaut d’une option utilisée pour les cas où la condition de recherche échoue. Si vous ne spécifiez pas de valeur par défaut, l’expression DECODE renvoie NULL.
Notes d’utilisation
Si expression et search ont la valeur NULL, le résultat DECODE est la valeur result correspondante. Pour une illustration de cette utilisation de la fonction, consultez Exemples.
Lorsqu’il est utilisé de cette façon, DECODE est similaire à Fonction NVL2, mais il existe quelques différences. Pour obtenir une description de ces différences, consultez les notes d’utilisation de NVL2.
Exemples
Lorsque la valeur 2008-06-01
existe dans la colonne CALDATE de DATETABLE, l’exemple suivant la remplace par June 1st, 2008
. L’exemple remplace toutes les autres valeurs CALDATE par NULL.
select decode(caldate, '2008-06-01', 'June 1st, 2008') from datetable where month='JUN' order by caldate; case ---------------- June 1st, 2008 ... (30 rows)
L’exemple suivant utilise une expression DECODE pour convertir les cinq colonnes CATNAME abrégées dans la table CATEGORY en noms complets et convertir les autres valeurs de la colonne en Unknown
.
select catid, decode(catname, 'NHL', 'National Hockey League', 'MLB', 'Major League Baseball', 'MLS', 'Major League Soccer', 'NFL', 'National Football League', 'NBA', 'National Basketball Association', 'Unknown') from category order by catid; catid | case -------+--------------------------------- 1 | Major League Baseball 2 | National Hockey League 3 | National Football League 4 | National Basketball Association 5 | Major League Soccer 6 | Unknown 7 | Unknown 8 | Unknown 9 | Unknown 10 | Unknown 11 | Unknown (11 rows)
Utilisez une expression DECODE pour trouver des sites dans le Colorado et le Nevada avec NULL dans la colonne VENUESEATS ; convertissez les valeurs NULL en zéros. Si la colonne VENUESEATS n’est pas NULL, renvoyez 1 comme résultat.
select venuename, venuestate, decode(venueseats,null,0,1) from venue where venuestate in('NV','CO') order by 2,3,1; venuename | venuestate | case ------------------------------+----------------+----------- Coors Field | CO | 1 Dick's Sporting Goods Park | CO | 1 Ellie Caulkins Opera House | CO | 1 INVESCO Field | CO | 1 Pepsi Center | CO | 1 Ballys Hotel | NV | 0 Bellagio Hotel | NV | 0 Caesars Palace | NV | 0 Harrahs Hotel | NV | 0 Hilton Hotel | NV | 0 ... (20 rows)