

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Função DECODE
<a name="r_DECODE_expression"></a>

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
<a name="r_DECODE_expression-synopsis"></a>

```
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
<a name="r_DECODE_expression-parameters"></a>

 *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
<a name="decode-expression-usage-notes"></a>

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](r_NVL2.md), mas há algumas diferenças. Para uma descrição dessas diferenças, consulte as observações de uso de NVL2.

## Exemplos
<a name="r_DECODE_expression-examples"></a>

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)
```