Поделиться через


Инструкция 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 для выполнения, если условие не true.
  • cond: выражение BOOLEAN.

Условия проверяются в определённом порядке, и будет выполнен только первый набор stmt, для которого opt или cond будут оценены как истина.

Примеры

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