Инструкция CASE

применяется:отмечен галочкой 'Да' Databricks Runtime 16.3 и выше

Выполняет thenStmtN для первого optN, равного expr или elseStmt, если optN не соответствует expr. Это называется оператором простого регистра.

Выполняет thenStmtN для первого condN, который вычисляется как true, или же elseStmt, если ни один condN не вычисляется как true. Это называется оператором выбора.

Для выражений CASE, которые возвращают значения результатов, см. CASE expression

Эта инструкция может использоваться только в составной инструкции.

Синтаксис

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

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

Параметры

  • expr

    Любое выражение, для которого определено сравнение.

  • opt

    Выражение с наименьшим общим типом, которое соответствует expr и всем другим optN.

  • thenStmt

    Инструкция SQL для выполнения, если задано предыдущее условие true.

  • elseStmt

    Запрос SQL для выполнения, если нет condtrue. Это все condfalse или null.

  • cond

    Выражение BOOLEAN.

Условия оцениваются по порядку, и затем будет выполнен только первый набор утверждений, для которого opt или cond вычисляется в 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