摘要:在本教程中,您將學習如何使用 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 表進行演示。

請看以下查詢:
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 邏輯。
本教程是否有幫助?