摘要:在本教程中,您将学习如何使用 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 逻辑。
本教程是否有帮助?