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