Função DECODE - Amazon Redshift

Função DECODE

Uma expressão DECODE substitui um valor específico por outro valor específico ou por valor padrão, dependendo do resultado de uma condição de igualdade. Essa operação é equivalente à operação de uma expressão CASE simples ou de uma instrução IF-THEN-ELSE.

Sintaxe

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

Este tipo de expressão é útil para substituir abreviações ou códigos armazenados em tabelas por valores de negócio significativos que são necessário para relatórios.

Parâmetros

expressão

A origem do valor que você deseja comparar, tal como uma coluna em uma tabela.

pesquisa

O valor de destino que é comparado à expressão de origem, tal como um valor numérico ou string de caracteres. A expressão da pesquisa deve avaliar para um único valor fixo. Você não pode especificar uma expressão que avalie para um intervalo de valores, tal como age between 20 and 29; você precisa especificar pares separados de pesquisa/resultados para cada valor que você deseja substituir.

O tipo de dados de todas as instâncias da expressão de pesquisa deve ser o mesmo ou compatível. Os parâmetros da expressão e pesquisa também devem ser compatíveis.

resultado

O valor de substituição que a consulta retorna quando a expressão corresponde ao valor da pesquisa. Você deve incluir pelo menos um par de pesquisa/resultados na expressão de DECODE.

OS tipos de dados de todas as instâncias da expressão de resultado deve ser o mesmo ou compatível. Os parâmetros resultado e padrão também devem ser compatíveis.

padrão

Um valor padrão opcional que é usado para casos em que a condição da pesquisa falha. Se você não especificar uma valor padrão, a expressão DECODE retornará NULL.

Observações de uso

Se o valor da expressão e o valor da pesquisa forem NULL, o resultado de DECODE será o valor de resultado correspondente. Para uma ilustração deste uso da função, consulte a seção de exemplos.

Quando usada essa forma, DECODE é semelhante a Função NVL2, mas há algumas diferenças. Para uma descrição dessas diferenças, consulte as observações de uso de NVL2.

Exemplos

Quando o valor 2008-06-01 existe na coluna caldate de datetable, o exemplo a seguir a substitui por June 1st, 2008. O exemplo substitui todos outros valores de caldate por NULL.

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

O seguinte exemplo usa uma expressão DECODE para converter as cinco colunas CATNAME abreviadas na tabela CATEGORY para nomes completos e para converter outros valores na coluna para 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)

Use uma expressão DECODE para localizar locais de evento no Colorado e em Nevada com NULL na coluna VENUESEATS; converta os NULLS para zeros. Se a coluna VENUESEATS não for NULA, retorne 1 como resultado.

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)