SQL DECODE

摘要:在本教程中,您將學習如何使用 SQL DECODE() 函式向查詢新增 if-then-else 邏輯。

SQL DECODE() 函式簡介 #

SQL DECODE() 函式允許您向查詢新增過程化的 if-then-else 邏輯。例如:

SELECT DECODE(1,1,'Equal');Code language: SQL (Structured Query Language) (sql)

在此示例中,DECODE() 函式將第一個引數 (one) 與第二個引數 (也是 one) 進行比較。

由於第一個引數等於第二個引數,該函式返回第三個引數,即字串 Equal

上述 DECODE() 函式的作用與以下 IF 語句相同:

IF 1 = 1 THEN
    RETURN 'Equal';
END IF;Code language: SQL (Structured Query Language) (sql)

以下示例返回 NULL,因為第一個引數不等於第二個引數。

SELECT DECODE(1,2, 'Equal');Code language: SQL (Structured Query Language) (sql)

它的作用類似於以下語句:

IF 1 = 2 THEN
    RETURN 'Equal';
END IF;Code language: SQL (Structured Query Language) (sql)

如果您想在第一個引數不等於第二個引數時指定返回值,可以使用以下形式的 DECODE() 函式:

SELECT DECODE(1,2, 'Equal', 'Not Equal');Code language: SQL (Structured Query Language) (sql)

它的作用類似於以下 IF-THEN-ELSE 語句:

IF 1 = 2 THEN
    RETURN 'Equal';
ELSE
    RETURN 'Not Equal';
END IF;Code language: SQL (Structured Query Language) (sql)

通常,您可以將 DECODE() 函式的第一個引數與一系列引數進行比較,如以下示例所示:

SELECT DECODE (2, 1, 'Equal 1', 2, 'Equal 2');Code language: SQL (Structured Query Language) (sql)

此示例的作用類似於以下 IF-THEN-ELSE IF 語句:

IF 2 = 1 THEN
     RETURN 'Equal 1';
ELSE IF 2 = 2 
    RETURN 'Equal 2';
END IF;Code language: SQL (Structured Query Language) (sql)

請看以下示例:

SELECT DECODE(3,1, 'Equal 1,', 2, 'Equal 2', 'Not Equal 1 or 2');Code language: SQL (Structured Query Language) (sql)

此示例的作用類似於以下 IF-THEN-ELSEIF-ELSE 語句:

IF 3 = 1 THEN 
    RETURN 'Equal 1';
ELSE IF 3 =2 THEN
    RETURN 'Equal 2';
ELSE
    RETURN 'Not Equal 1 or 2';
END IF;
Code language: SQL (Structured Query Language) (sql)

SQL DECODE() 函式語法 #

下面闡述了 SQL DECODE() 函式的語法:

DECODE (e , s1, r1[, s2, r2], ...,[,sn,rn] [, d]);Code language: SQL (Structured Query Language) (sql)

在此語法中:

  • e 是被搜尋或與其他引數 s1, s2, … sn 進行比較的引數。
  • s1, s2, …, 或 sn 是要搜尋的表示式。該函式會按順序將第一個引數與 s1, s2, …, sn 進行比較。如果任何比較 e = s1, e = s2, …, e = sn 返回 true,DECODE() 函式將終止評估並返回結果。
  • r1, r2, …, 或 rn 是當 ei = si 時的返回結果。
  • d 是當 e 不等於任何引數 s1, s2, … 或 sn 時返回的表示式。

SQL DECODE() 示例 #

我們將使用示例資料庫中的 employees 表進行演示。

SQL DECODE: employees table

請看以下查詢:

SELECT
  employee_id,
  first_name,
  last_name,
  salary
FROM
  employees
ORDER BY
  DECODE('S', 'F', first_name, 'L', last_name, 'S', salary);Code language: SQL (Structured Query Language) (sql)

在此示例中:

  • ORDER BY 子句中使用 DECODE() 函式。DECODE() 函式根據輸入引數返回要排序的列。
  • DECODE() 函式返回了 salary 列,因此結果集按 salary 列進行了排序。

摘要 #

  • 使用 SQL DECODE() 函式為查詢新增 if-then-else 邏輯。
本教程是否有幫助?
© .