CASE (Azure Stream Analytics)

Oblicza listę warunków i zwraca jedną z wielu możliwych wyrażeń wyników.

Wyrażenie CASE ma dwa formaty:

  • Proste wyrażenie CASE porównuje wyrażenie z zestawem prostych wyrażeń w celu określenia wyniku.

  • Przeszukane wyrażenie CASE oblicza zestaw wyrażeń logicznych w celu określenia wyniku.

Oba formaty wymagają argumentu ELSE.

Case może być używany w dowolnej instrukcji lub klauzuli, która zezwala na prawidłowe wyrażenie. Można na przykład użyć funkcji CASE w wyrażeniach, takich jak SELECT i w klauzulach, takich jak WHERE i HAVING.

Składnia

Proste wyrażenie CASE:

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

Przeszukane wyrażenie CASE:

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

Argumenty

Input_expression

Czy wyrażenie jest oceniane, gdy jest używany prosty format CASE. Obliczona wartość jest porównywana z when_expression.

KIEDY when_expression

To wyrażenie, do którego input_expression jest porównywane przy użyciu prostego formatu CASE. Typy when_expressions nie muszą być zgodne.

KIEDY boolean_expression

Czy wyrażenie logiczne jest oceniane podczas korzystania z przeszukanego formatu CASE. Jeśli to wyrażenie zwróci wartość true, zwracany jest odpowiedni result_expression .

NASTĘPNIE result_expression

Czy wyrażenie jest zwracane, gdy input_expression równa się when_expression (w prostym formacie CASE) lub gdy boolean_expression ma wartość true (w wyszukiwanym formacie CASE).

ELSE_RESULT_EXPRESSION ELSE

Czy wyrażenie jest zwracane, jeśli żadne z warunków obliczonych na wartość TRUE.

Typ zwracany

Jest najwyższym typem pierwszeństwa od zestawu typów w result_expression i else_result_expression.

Przykłady

Używając opcji select z prostym wyrażeniem CASE:

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

Używając opcji select z wyszukiwanym wyrażeniem CASE:

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