案例

✅ Azure 流分析 ✅ 构造事件流

计算条件列表并返回多个可能的结果表达式之一。

CASE 表达式有两种格式:

  • 简单 CASE 表达式将表达式与一组简单表达式进行比较,以确定结果。

  • 搜索的 CASE 表达式计算一组布尔表达式以确定结果。

这两种格式都需要 ELSE 参数。

CASE 可用于允许有效表达式的任何语句或子句。 例如,可以在 SELECT 等表达式和子句(如 WHERE 和 HAVING)中使用 CASE。

语法

简单 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

使用简单 CASE 格式时 input_expression 要比较的表达式。 when_expressions的类型不一定必须匹配。

WHEN boolean_expression

使用搜索的 CASE 格式时计算的布尔表达式。 如果此表达式的计算结果为 true,则返回相应的 result_expression

然后result_expression

input_expression 等于 when_expression (以简单 CASE 格式)或 boolean_expression 计算结果为 true(以搜索的 CASE 格式)时返回的表达式。

ELSE else_result_expression

如果未计算出任何条件为 TRUE,则返回的表达式。

返回类型

result_expression (s)和 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

对搜索的 CASE 表达式使用 select:

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