Funções condicionais - Amazon Simple Storage Service

Funções condicionais

O Amazon S3 Select é compatível com as seguintes funções condicionais.

CASE

A expressão CASE é uma expressão condicional, semelhante às instruções if/then/else encontradas em outras linguagens. CASE é usado para especificar um resultado com várias condições. Há dois tipos de expressões CASE: simples e pesquisada.

Em expressões CASE simples, uma expressão é comparada a um valor. Quando uma correspondência é encontrada, a ação especificada na cláusula THEN é aplicada. Se nenhuma correspondência é encontrada, a ação especificada na cláusula ELSE é aplicada.

Em expressões CASE pesquisadas, cada CASE é avaliado com base em uma expressão booliana e a instrução CASE retorna o primeiro CASE correspondente. Se nenhuma correspondência de CASE for encontrada entre as cláusulas WHEN, a ação na cláusula ELSE será retornada.

Sintaxe

nota

Atualmente, o Amazon S3 Select não é compatível com ORDER BY ou consultas que contenham novas linhas. Use consultas sem quebras de linha.

A seguir está uma declaração CASE simples usada para corresponder às condições:

CASE expression WHEN value THEN result [WHEN...] [ELSE result] END

Veja a seguir uma declaração CASE pesquisada usada para avaliar cada condição:

CASE WHEN boolean condition THEN result [WHEN ...] [ELSE result] END

Exemplos

nota

Se você usar o console do Amazon S3 para executar os exemplos a seguir e o arquivo CSV tiver uma linha de cabeçalho, selecione Excluir a primeira linha de dados do CSV.

Exemplo 1: use uma expressão CASE simples para substituir New York City por Big Apple em uma consulta. Substitua todos os outros nomes de cidade por other.

SELECT venuecity, CASE venuecity WHEN 'New York City' THEN 'Big Apple' ELSE 'other' END FROM S3Object;

Resultado da consulta:

venuecity | case -----------------+----------- Los Angeles | other New York City | Big Apple San Francisco | other Baltimore | other ...

Exemplo 2: use uma expressão CASE pesquisada para atribuir números de grupo com base no valor pricepaid para vendas individuais de ingresso:

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 da 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 avalia os argumentos na ordem e retorna o primeiro valor não desconhecido, ou seja, o primeiro valor que não for nulo ou ausente. Essa função não propaga valores nulos e ausentes.

Sintaxe

COALESCE ( expression, expression, ... )

Parâmetros

expression

A expressão de destino na qual a função opera.

Exemplos

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 as duas expressões, NULLIF retorna NULL se as duas forem avaliadas para o mesmo valor. Caso contrário, NULLIF retorna o resultado da avaliação da primeira expressão.

Sintaxe

NULLIF ( expression1, expression2 )

Parâmetros

expression1, expression2

As expressões de destino nas quais a função opera.

Exemplos

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