

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Instrucciones case
<a name="iot-sql-case"></a>

Las instrucciones case se pueden utilizar para ejecutar bifurcaciones, como una instrucción switch.

Sintaxis:

```
CASE v WHEN t[1] THEN r[1] 
  WHEN t[2] THEN r[2] ... 
  WHEN t[n] THEN r[n] 
  ELSE r[e] END
```

La expresión *`v`* se evalúa y se compara con el valor *`t[i]`* de todas las cláusulas `WHEN`. Si se encuentra una coincidencia, la expresión *`r[i]`* correspondiente se convierte en el resultado de la instrucción `CASE`. Las cláusulas `WHEN` se evalúan en orden, de modo que si hay más de una cláusula coincidente, el resultado de la primera cláusula coincidente se convierte en el resultado de la instrucción `CASE`. Si no hay coincidencias, el resultado es *`r[e]`* de la cláusula `ELSE`. Si no hay ninguna coincidencia ni cláusula `ELSE`, el resultado es `Undefined`.

Las instrucciones `CASE` necesitan como mínimo una cláusula `WHEN`. Una cláusula `ELSE` es opcional.

Por ejemplo:

Carga de entrada publicada en el tema `topic/subtopic`: 

```
{
    "color":"yellow"
}
```

Instrucción SQL: 

```
SELECT CASE color
        WHEN 'green' THEN 'go'
        WHEN 'yellow' THEN 'caution'
        WHEN 'red' THEN 'stop'
        ELSE 'you are not at a stop light' END as instructions
    FROM 'topic/subtopic'
```

La carga de salida obtenida sería:

```
{
    "instructions":"caution"
}
```

**nota**  
Si *`v`* es `Undefined`, el resultado de la instrucción case es `Undefined`.