Pernyataan CASE

Berlaku untuk:dicentang ya Databricks Runtime 16.3 ke atas

Menjalankan thenStmtN untuk optN pertama yang sama dengan expr, atau dengan elseStmt jika tidak ada optN yang cocok dengan expr. Ini disebut pernyataan kasus sederhana .

Menjalankan thenStmtN untuk condN pertama yang bernilai true, atau elseStmt jika tidak ada condN yang bernilai true. Ini disebut pernyataan kasus yang dicari .

Untuk ekspresi kasus yang menghasilkan nilai hasil, lihat Ekspresi CASE

Pernyataan ini hanya dapat digunakan dalam pernyataan gabungan .

Sintaksis

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

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

Parameter

  • expr

    Ekspresi apa pun yang didefinisikan perbandingannya.

  • opt

    Ekspresi dengan jenis paling tidak umum dengan expr dan semua lainnya optN.

  • thenStmt

    Pernyataan SQL untuk dijalankan jika kondisi sebelumnya adalah true.

  • elseStmt

    Pernyataan SQL untuk dijalankan jika tidak cond ada true. Itu semua cond adalah false atau null.

  • cond

    Ekspresi BOOLEAN .

Kondisi dievaluasi secara berurutan, dan hanya sekumpulan pernyataan pertama di mana opt atau cond dievaluasi menjadi true yang akan dijalankan.

Contoh

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