O Amazon Redshift não permitirá mais a criação de funções definidas pelo usuário (UDFs) do Python a partir de 1.º de novembro de 2025. Se quiser usar UDFs do Python, você deve criá-las antes dessa data. As UDFs do Python existentes continuarão a funcionar normalmente. Para ter mais informações, consulte a publicação de blog
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.
- pesquisar
-
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.
- default
-
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)