Fonction DECODE - Amazon Redshift

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)