

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Declarações de caso
<a name="iot-sql-case"></a>

As declarações de caso podem ser usadas para execução de ramificação, como uma declaração de troca.

Sintaxe:

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

A expressão {{`v`}} é avaliada e comparada quanto à igualdade com o valor {{`t[i]`}} de cada cláusula `WHEN`. Se uma correspondência for encontrada, a expressão {{`r[i]`}} correspondente se tornará o resultado da declaração do `CASE`. As cláusulas `WHEN` são avaliadas em ordem para que, se houver mais de uma cláusula correspondente, o resultado da primeira cláusula correspondente se torne o resultado da declaração do `CASE`. Se não houver correspondências, {{`r[e]`}} da cláusula `ELSE` é o resultado. Se não houver correspondências e não houver cláusula `ELSE`, o resultado é `Undefined`.

As declarações de `CASE` exigem, pelo menos, uma cláusula `WHEN`. Qualquer cláusula `ELSE` é opcional.

Por exemplo:

Carga útil de entrada publicada no tópico `topic/subtopic`:

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

Declaração do 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'
```

A carga útil de saída resultante seria:

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

**nota**  
Se {{`v`}} for `Undefined`, o resultado da declaração do caso será `Undefined`.