CASE 语句

适用于:勾选标记为“是” Databricks Runtime 16.3 及更高版本

重要

此功能目前以公共预览版提供。

对于第一个等于 thenStmtNoptN 执行 expr,如果没有 elseStmtoptN 匹配,则执行 expr。 这被称为简单情况语句

对第一个计算结果为 thenStmtNcondN 执行 true,如果没有 elseStmt 计算结果为 condN,则执行 true。 这称为 搜索事例语句

有关生成结果值的事例表达式,请参阅 CASE 表达式

此语句只能在 复合语句中使用。

语法

CASE expr
  { WHEN opt THEN { thenStmt ; } [...] } [...]
  [ ELSE { elseStmt ; } [...] ]
END CASE

CASE
  { WHEN cond THEN { thenStmt ; } [...] } [...]
  [ ELSE { elseStmt ; } [...] ]
END CASE

参数

  • expr

    任何已定义比较的表达式。

  • opt

    具有与expr和所有其他optN具有最小公类型的表达式。

  • thenStmt

    如果上述条件为 true,则执行 SQL 语句。

  • elseStmt

    要执行的 SQL 语句(如果否condtrue)。 所有的cond都是falsenull

  • cond

    BOOLEAN 表达式。

条件按顺序进行评估,并且只会执行使得 optcond 评估为 true 的第一组语句。

例子

-- a simple case statement
> BEGIN
    DECLARE choice INT DEFAULT 3;
    DECLARE result STRING;
    CASE choice
      WHEN 1 THEN
        VALUES ('one fish');
      WHEN 2 THEN
        VALUES ('two fish');
      WHEN 3 THEN
        VALUES ('red fish');
      WHEN 4 THEN
        VALUES ('blue fish');
      ELSE
        VALUES ('no fish');
    END CASE;
  END;
 red fish

-- A searched case statement
> BEGIN
    DECLARE choice DOUBLE DEFAULT 3.9;
    DECLARE result STRING;
    CASE
      WHEN choice < 2 THEN
        VALUES ('one fish');
      WHEN choice < 3 THEN
        VALUES ('two fish');
      WHEN choice < 4 THEN
        VALUES ('red fish');
      WHEN choice < 5 OR choice IS NULL THEN
        VALUES ('blue fish');
      ELSE
        VALUES ('no fish');
    END CASE;
  END;
 red fish