Función DECODE - Amazon Redshift

Función DECODE

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

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.

Parámetros

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.

result

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.

predeterminada

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

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, pero hay algunas diferencias. Para obtener una descripción de estas diferencias, consulte las notas de uso de NVL2.

Ejemplos

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)