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 逻辑。
本教程是否有帮助?
© .