CASE (Azure Stream Analytics)

Оценка списка условий и возвращение одного из нескольких возможных выражений результатов.

Выражение CASE имеет два формата:

  • простое выражение CASE для определения результата сравнивает выражение с набором простых выражений;

  • поисковое выражение CASE для определения результата вычисляет набор логических выражений.

Для обоих форматов требуется аргумент ELSE.

Выражение CASE может использоваться в любой инструкции или предложении, которые допускают допустимые выражения. Например, можно использовать CASE в выражениях, таких как SELECT, и предложениях, таких как WHERE и HAVING.

Синтаксис

Простое выражение CASE:

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

Поисковое выражение CASE:

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

Аргументы

input_expression

Выражение, полученное при использовании простого формата функции CASE. Вычисленное значение сравнивается с when_expression.

WHEN when_expression

Выражение, с которым сравнивается input_expression при использовании простого формата CASE. Типы when_expressions не обязательно должны совпадать.

КОГДА boolean_expression

Логическое выражение вычисляется при использовании искомого формата CASE. Если это выражение имеет значение true, возвращается соответствующее result_expression .

THEN result_expression

Выражение возвращается, когда input_expression равно when_expression (в простом формате CASE) или если boolean_expression принимает значение true (в искомом формате CASE).

ELSE else_result_expression

Возвращается выражение, если ни одно из условий не имеет значения TRUE.

Возвращаемый тип

Тип с наивысшим приоритетом из набора типов в result_expression и else_result_expression.

Примеры

Использование функции select с простым выражением CASE:

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

Использование команды select с искомыми выражениями CASE:

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