

 Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del parche 198. Las UDF de Python existentes seguirán funcionando hasta el 30 de junio de 2026. Para obtener más información, consulte la [publicación del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Función DECODE
<a name="r_DECODE_expression"></a>

Una expresión DECODE reemplaza un valor específico por otro valor específico o por un valor predeterminado, según el resultado de una condición de igualdad. Esta operación equivale a la operación de una expresión CASE simple o una instrucción IF-THEN-ELSE.

## Sintaxis
<a name="r_DECODE_expression-synopsis"></a>

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

Este tipo de expresión es útil para reemplazar abreviaciones o códigos almacenados en tablas con valores comerciales significativos que se necesitan para los informes.

## Parameters
<a name="r_DECODE_expression-parameters"></a>

 *expression*   
El origen del valor que desea comparar, como una columna en una tabla.

 *search*   
El valor destino con el que se compara la expresión origen, como un valor numérico o una cadena de caracteres. La expresión buscar debe tomar un único valor fijo. No puede especificar una expresión que tome un rango de valores, como `age between 20 and 29`; debe especificar pares separados de búsqueda-resultado para cada valor que desea reemplazar.  
Los tipos de datos para todas las instancias de la expresión buscar deben ser iguales o compatibles. Los parámetros *expression (expresión)* y *search (buscar)* también deben ser compatibles.

 *desafío inicial*   
El valor de reemplazo que devuelve la consulta cuando la expresión coincide con el valor de búsqueda. Debe incluir al menos un par búsqueda-resultado en la expresión DECODE.  
Los tipos de datos para todas las instancias de la expresión resultado deben ser iguales o compatibles. Los parámetros *result (resultado)* y *default (predeterminado)* también deben ser compatibles.

 *predeterminado*   
Un valor predeterminado opcional que se usa para casos en los que falla la condición de búsqueda. Si no especifica un valor predeterminado, la expresión DECODE devuelve NULL.

## Notas de uso
<a name="decode-expression-usage-notes"></a>

Si el valor de *expression* y el valor *search* son los dos NULL, el resultado DECODE es el valor *result* correspondiente. Para ver una ilustración de este uso de la función, consulte la sección Ejemplos.

Cuando se usa de esta manera, DECODE es similar a [Función NVL2](r_NVL2.md), pero hay algunas diferencias. Para obtener una descripción de estas diferencias, consulte las notas de uso de NVL2.

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

Cuando el valor `2008-06-01` existe en la columna caldate de datatable, el siguiente ejemplo lo reemplaza por `June 1st, 2008`. El ejemplo reemplaza todos los demás valores 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)
```

En el siguiente ejemplo, se utiliza una expresión DECODE para convertir a nombres completos las cinco columnas CATNAME abreviadas en la tabla CATEGORY y convertir los demás valores de la columna 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)
```

Se usa una expresión DECODE para encontrar lugares en Colorado y Nevada con NULL en la columna VENUESEATS; se convierten los NULL a ceros. Si la columna VENUESEATS no es NULL, devuelve 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)
```