

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