Sdílet prostřednictvím


CASE (Azure Stream Analytics)

Vyhodnotí seznam podmínek a vrátí jeden z více možných výrazů výsledku.

Výraz CASE má dva formáty:

  • Jednoduchý výraz CASE porovnává výraz se sadou jednoduchých výrazů, aby určil výsledek.

  • Hledaný výraz CASE vyhodnotí sadu logických výrazů a určí výsledek.

Oba formáty vyžadují argument ELSE.

Case lze použít v libovolném příkazu nebo klauzuli, která umožňuje platný výraz. Argument CASE můžete použít například ve výrazech SELECT a v klauzulích, jako je WHERE a HAVING.

Syntax

Jednoduchý výraz CASE:

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

Hledaný výraz CASE:

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

Argumenty

input_expression

Je výraz vyhodnocen při použití jednoduchého formátu CASE. Vyhodnocená hodnota se porovná s when_expression.

KDY when_expression

Je výraz, se kterým se input_expression porovnává při použití jednoduchého formátu CASE. Typy when_expressions se nemusí nutně shodovat.

KDY boolean_expression

Je logický výraz vyhodnocen při použití hledaného formátu CASE. Pokud se tento výraz vyhodnotí jako true, vrátí se odpovídající result_expression .

PAK result_expression

Vrátí se výraz, když se input_expression rovná when_expression (v jednoduchém formátu CASE) nebo když se boolean_expression vyhodnotí jako true (ve formátu hledaného případu).

ELSE else_result_expression

Vrátí se výraz, pokud žádná z podmínek není vyhodnocena jako PRAVDA.

Návratový typ

Je typ s nejvyšší prioritou ze sady typů v result_expression a else_result_expression.

Příklady

Použití příkazu select s jednoduchým výrazem CASE:

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

Použití funkce select s hledaným výrazem CASE:

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