Funzione DECODE - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Funzione DECODE

Un'espressione DECODE sostituisce un valore specifico con un altro valore specifico o un valore predefinito, in base al risultato di una condizione di uguaglianza. Questa operazione è equivalente all'operazione di un'espressione CASE semplice o di un'istruzione IF-THEN-ELSE.

Sintassi

DECODE ( expression, search, result [, search, result ]... [ ,default ] )

Questo tipo di espressione è utile per sostituire abbreviazioni o codici archiviati in tabelle con valori aziendali significativi necessari per i report.

Parametri

espressione

La fonte del valore che si desidera confrontare, come ad esempio una colonna in una tabella.

cerca

Il valore di destinazione che viene confrontato con l'espressione di origine, ad esempio un valore numerico o una stringa di caratteri. L'espressione di ricerca deve valutare un singolo valore fisso. Non è possibile specificare un'espressione che valuti un intervallo di valori, ad esempio age between 20 and 29; è necessario specificare coppie di ricerca/risultato separate per ciascun valore che si desidera sostituire.

Il tipo di dati di tutte le istanze dell'espressione di ricerca deve essere lo stesso o compatibile. I parametri espressione e cerca devono essere anche compatibili.

result

Il valore di sostituzione che la query restituisce quando l'espressione corrisponde al valore di ricerca. È necessario includere almeno una coppia di ricerca/risultato nell'espressione DECODE.

I tipi di dati di tutte le istanze dell'espressione del risultato devono essere gli stessi o compatibili. I parametri risultato e impostazione predefinita devono essere anche compatibili.

default

Un valore predefinito facoltativo che viene utilizzato per i casi in cui la condizione di ricerca non ha esito positivo. Se non viene specificato un parametro, l'espressione DECODE restituisce NULL.

Note per l'utilizzo

Se il valore espressione e il valore cerca sono entrambi NULL, il risultato DECODE è il valore risultato corrispondente. Per un'illustrazione di questo uso della funzione, vedere la sezione Esempi.

Quando viene utilizzato in questo modo, DECODE è simile a Funzione NVL2, ma ci sono alcune differenze. Per una descrizione di queste differenze, vedere le note di utilizzo NVL2.

Esempi

Quando il valore 2008-06-01 esiste nella colonna CALDATE della DATETABLE, l'esempio seguente lo sostituisce con June 1st, 2008. L'esempio sostituisce tutti gli altri valori CALDATE con NULL.

select decode(caldate, '2008-06-01', 'June 1st, 2008') from datetable where month='JUN' order by caldate; case ---------------- June 1st, 2008 ... (30 rows)

Nell'esempio seguente viene utilizzata un'espressione DECODE per convertire le cinque colonne CATNAME abbreviate nella tabella CATEGORY in nomi completi e convertire altri valori nella colonna in 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)

Utilizzare un'espressione DECODE per trovare luoghi in Colorado e Nevada con NULL nella colonna VENUESEATS; convertire i valori NULL in zeri. Se la colonna VENUESEATS non è NULL, restituire 1 come risultato.

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)