CASE (Azure Stream Analytics)

Avalia uma lista de condições e retorna uma das várias expressões de resultado possíveis.

A expressão CASE tem dois formatos:

  • A expressão CASE simples compara uma expressão com um conjunto de expressões simples para determinar o resultado.

  • A expressão CASE pesquisada avalia um conjunto de expressões boolianas para determinar o resultado.

Ambos os formatos exigem um argumento ELSE.

CASE pode ser usada em qualquer instrução ou cláusula que permita uma expressão válida. Por exemplo, você pode usar CASE em expressões, como SELECT e nas cláusulas como WHERE e HAVING.

Syntax

Expressão CASE simples:

CASE input_expression
     WHEN when_expression THEN result_expression [ ...n ] 
     ELSE else_result_expression
END  

Expressão CASE pesquisada:

CASE  
     WHEN Boolean_expression THEN result_expression [ ...n ]
     ELSE else_result_expression  
END  

Argumentos

input_expression

É a expressão avaliada quando o formato CASE simples é usado. O valor avaliado é comparado com o when_expression.

WHEN when_expression

É a expressão à qual input_expression é comparado ao usar o formato CASE simples. Os tipos de when_expressions não precisam necessariamente corresponder.

QUANDO boolean_expression

É a expressão booliana avaliada ao usar o formato CASE pesquisado. Se essa expressão for avaliada como true, o result_expression correspondente será retornado.

THEN result_expression

É a expressão retornada quando input_expression é igual a when_expression (no formato CASE simples) ou quando boolean_expression é avaliada como true (no formato CASE pesquisado).

ELSE else_result_expression

É a expressão retornada se nenhuma das condições avaliadas como TRUE.

Tipo de retorno

É o tipo de precedência mais alto do conjunto de tipos em result_expression e else_result_expression.

Exemplos

Usando select com uma expressão CASE simples:

  SELECT
    CASE vehicleType
      WHEN 'S' THEN 'Sedan'
      WHEN 'T' THEN 'Truck'
      WHEN 'V' THEN 'Van'
      ELSE NULL
    END as vehicleTypeName
  FROM vehicles

Usando select com expressão CASE pesquisada:

  SELECT
    CASE
      WHEN temperature < 60 THEN 'Alert'
      ELSE 'OK'
    END as currentStatus
  FROM sensor