

# Funções condicionais
<a name="s3-select-sql-reference-conditional"></a>

**Importante**  
O Amazon S3 Select não está mais disponível para novos clientes. Os clientes existentes do Amazon S3 Select podem continuar usando o recurso normalmente. [Saiba mais](https://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/) 

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

**Topics**
+ [CASE](#s3-select-sql-reference-case)
+ [COALESCE](#s3-select-sql-reference-coalesce)
+ [NULLIF](#s3-select-sql-reference-nullif)

## CASE
<a name="s3-select-sql-reference-case"></a>

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
<a name="s3-select-sql-reference-case-syntax"></a>

**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
<a name="s3-select-sql-reference-case-examples"></a>

**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
<a name="s3-select-sql-reference-coalesce"></a>

`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
<a name="s3-select-sql-reference-coalesce-syntax"></a>

```
COALESCE ( expression, expression, ... )
```

### Parâmetros
<a name="s3-select-sql-reference-coalesce-parameters"></a>

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

### Exemplos
<a name="s3-select-sql-reference-coalesce-examples"></a>

```
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
<a name="s3-select-sql-reference-nullif"></a>

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
<a name="s3-select-sql-reference-nullif-syntax"></a>

```
NULLIF ( expression1, expression2 )
```

### Parâmetros
<a name="s3-select-sql-reference-nullif-parameters"></a>

 `expression1, expression2`   
As expressões de destino nas quais a função opera.

### Exemplos
<a name="s3-select-sql-reference-nullif-examples"></a>

```
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
```