Funciones condicionales
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