Funciones condicionales
importante
Amazon S3 Select ya no está disponible para los nuevos clientes. Los clientes actuales de Amazon S3 Select pueden seguir utilizando la característica de la forma habitual. Más información
Amazon S3 Select admite las siguientes funciones condicionales.
CASE
La expresión CASE
es una expresión condicional similar a las instrucciones if/then/else
que se encuentran en otros lenguajes. CASE
se utiliza para especificar un resultado cuando hay varias condiciones. Existen dos tipos de expresiones CASE
: simple y buscada.
En expresiones CASE
simples, una expresión se compara con un valor. Cuando hay una coincidencia, se aplica la acción especificada en la cláusula THEN
. Si no se encuentra ninguna coincidencia, se aplica la acción en la cláusula ELSE
.
En las expresiones CASE
buscadas, cada CASE
se evalúa según una expresión booleana y la instrucción CASE
devuelve el primer CASE
que coincida. Si no hay ninguna coincidencia de CASE
entre las cláusulas WHEN
, se devuelve la acción en la cláusula ELSE
.
Sintaxis
nota
Actualmente, Amazon S3 Select no admite ORDER BY
ni consultas que contienen líneas nuevas. Asegúrese de usar consultas sin saltos de línea.
A continuación, se muestra una instrucción CASE
sencilla que se utiliza para hacer coincidir condiciones:
CASE
expression
WHENvalue
THENresult
[WHEN...] [ELSEresult
] END
La siguiente es una instrucción CASE
buscada que se utiliza para evaluar cada condición:
CASE WHEN
boolean condition
THENresult
[WHEN ...] [ELSEresult
] END
Ejemplos
nota
Si utiliza la consola de Amazon S3 para ejecutar los siguientes ejemplos y el archivo CSV contiene una fila de encabezado, elija Excluir la primera línea de datos CSV.
Ejemplo 1: utilice una expresión CASE
simple para reemplazar New York City
por Big Apple
en una consulta. Reemplace todos los demás nombres de ciudad por other
.
SELECT venuecity, CASE venuecity WHEN 'New York City' THEN 'Big Apple' ELSE 'other' END FROM S3Object;
Resultado de la consulta:
venuecity | case -----------------+----------- Los Angeles | other New York City | Big Apple San Francisco | other Baltimore | other ...
Ejemplo 2: Utilice una expresión CASE
buscada para asignar números de grupo según el valor pricepaid
para ventas de tickets individuales:
SELECT pricepaid, CASE WHEN CAST(pricepaid as FLOAT) < 10000 THEN 'group 1' WHEN CAST(pricepaid as FLOAT) > 10000 THEN 'group 2' ELSE 'group 3' END FROM S3Object;
Resultado de la consulta:
pricepaid | case -----------+--------- 12624.00 | group 2 10000.00 | group 3 10000.00 | group 3 9996.00 | group 1 9988.00 | group 1 ...
COALESCE
COALESCE
evalúa los argumentos por orden y devuelve el primero que no sea desconocido, es decir, el primero no nulo o que no falta. Esta función no propaga los argumentos nulos o que faltan.
Sintaxis
COALESCE (
expression
,expression
, ... )
Parámetros
-
expression
-
La expresión de destino sobre la que opera la función.
Ejemplos
COALESCE(1) -- 1 COALESCE(null) -- null COALESCE(null, null) -- null COALESCE(missing) -- null COALESCE(missing, missing) -- null COALESCE(1, null) -- 1 COALESCE(null, null, 1) -- 1 COALESCE(null, 'string') -- 'string' COALESCE(missing, 1) -- 1
NULLIF
Dadas dos expresiones, NULLIF
devuelve NULL
si ambas toman el mismo valor; en caso contrario, NULLIF
devuelve el resultado de la evaluación de la primera expresión.
Sintaxis
NULLIF (
expression1
,expression2
)
Parámetros
-
expression1
,expression2
-
Las expresiones de destino sobre las que opera la función.
Ejemplos
NULLIF(1, 1) -- null NULLIF(1, 2) -- 1 NULLIF(1.0, 1) -- null NULLIF(1, '1') -- 1 NULLIF([1], [1]) -- null NULLIF(1, NULL) -- 1 NULLIF(NULL, 1) -- null NULLIF(null, null) -- null NULLIF(missing, null) -- null NULLIF(missing, missing) -- null