

# Funciones condicionales
<a name="s3-select-sql-reference-conditional"></a>

**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](https://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/) 

Amazon S3 Select admite las siguientes funciones condicionales.

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

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

**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 WHEN value THEN result [WHEN...] [ELSE result] END					
```

La siguiente es una instrucción `CASE` buscada que se utiliza para evaluar cada condición:

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

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

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

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

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

### Parameters
<a name="s3-select-sql-reference-coalesce-parameters"></a>

 *`expression`*   
La expresión de destino sobre la que opera la función.

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

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

### Parameters
<a name="s3-select-sql-reference-nullif-parameters"></a>

 `expression1, expression2`   
Las expresiones de destino sobre las que opera la función.

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