Compartilhar via


Instrução CASE

Aplica-se a:marca de seleção sim Databricks Runtime 16.3 e superior

Executa thenStmtN para o primeiro optN que seja igual a expr ou elseStmt, se não houver optN que corresponda a expr. Isso é chamado de declaração de caso simples.

Executa thenStmtN para o primeiro condN avaliando para trueou elseStmt se nenhum condN for avaliado como true. Isso é chamado de declaração de caso pesquisado.

Para expressões CASE que produzem valores de resultado, consulte expressão CASE

Essa instrução só pode ser usada em uma instrução composta.

Sintaxe

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

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

Parâmetros

  • expr

    Qualquer expressão para a qual uma comparação é definida.

  • opt

    Uma expressão com um tipo menos comum com expr e todos os outros optN.

  • thenStmt

    Executar uma instrução SQL se a condição anterior for true.

  • elseStmt

    Uma instrução SQL a ser executada caso nenhum cond seja true. Isso é tudo cond, false ou null.

  • cond

    Uma expressão BOOLEAN.

As condições são avaliadas em ordem, e somente o primeiro conjunto de instruções para as quais opt ou cond avaliem para true será executado.

Exemplos

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