case 表达式

适用于:check marked yes Databricks SQL check marked yes Databricks Runtime

返回等于 expr 的第一个 optNresN;如果没有任何匹配项,则返回 def

返回计算结果为 true 的第一个 condNresN;如果找不到任何匹配项,则返回 def

语法

CASE expr {WHEN opt1 THEN res1} [...] [ELSE def] END
CASE {WHEN cond1 THEN res1} [...] [ELSE def] END

参数

  • expr:为其定义了比较的任何表达式。
  • optN:一个具有 expr 和所有其他 optN最不常见类型的表达式。
  • resN:具有 resNdef最不常见类型的任何表达式。
  • def:一个具有所有 resN最不常见类型的可选表达式。
  • condN:一个 BOOLEAN 表达式。

返回

结果类型与 resNdef最不常见类型匹配。

如果省略 def,则默认值为 NULL。 将按顺序计算条件,仅执行生成结果的 resNdef

示例

> SELECT CASE WHEN 1 > 0 THEN 1 WHEN 2 > 0 THEN 2.0 ELSE 1.2 END;
 1.0
> SELECT CASE WHEN 1 < 0 THEN 1 WHEN 2 > 0 THEN 2.0 ELSE 1.2 END;
 2.0
> SELECT CASE WHEN 1 < 0 THEN 1 WHEN 2 < 0 THEN 2.0 END;
 NULL
> SELECT CASE 3 WHEN 1 THEN 'A' WHEN 2 THEN 'B' WHEN 3 THEN 'C' END;
 C