跳转至

PL/SQL 运算符

本章系统总结 PL/SQL 中常用的运算符及其优先级规则。运算符是编写条件判断、计算逻辑和字符串处理的核心内容,在实际项目和面试中都属于高频基础知识点


1. 运算符概述

运算符用于对一个或多个操作数执行特定操作。在 PL/SQL 中,常见的运算符主要包括:

  • 算术运算符
  • 关系运算符
  • 比较运算符
  • 逻辑运算符
  • 字符串运算符

2. 算术运算符

算术运算符用于执行数值计算。

运算符 说明 示例
+ 加法 a + b
- 减法 / 取负 a - b, -a
* 乘法 a * b
/ 除法 a / b
** 幂运算 a ** b

示例

declare
  a number := 10;
  b number := 3;
begin
  dbms_output.put_line(a + b); -- 13
  dbms_output.put_line(a / b); -- 3.333...
  dbms_output.put_line(a ** b);  -- 1000
end;
/

3. 关系运算符

关系运算符用于比较两个值的关系,返回结果为 BOOLEAN

运算符 说明
= 等于
!= 不等于
<> 不等于
^= 不等于
~= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于

示例

declare
  a number := 10;
  b number := 20;
begin
  if a < b then
 dbms_output.put_line('a < b');
  end if;
end;
/

4. 比较运算符(特殊)

PL/SQL 中还提供了一些用于范围和模式匹配的比较运算符(通常用于 SQL,但在 PL/SQL 条件中同样常见)。

运算符 说明 示例
BETWEEN 在指定范围内 x BETWEEN 1 AND 10
IN 在指定集合中 x IN (1,2,3)
LIKE 模式匹配 name LIKE 'A%'
IS NULL 是否为 NULL v IS NULL
IS NOT NULL 是否非 NULL v IS NOT NULL

⚠️ 注意:

  • NULL 不能用 = 或 != 比较,必须使用 IS NULL / IS NOT NULL

5. 逻辑运算符

逻辑运算符用于组合多个条件表达式。

运算符 说明
AND 逻辑与(同时成立)
OR 逻辑或(任一成立)
NOT 逻辑非

示例

declare
  age number := 25;
begin
  if age >= 18 and age < 60 then
 dbms_output.put_line('Working age');
  end if;
end;
/

6. 字符串运算符

PL/SQL 中主要的字符串运算符是 连接运算符

| 运算符 | 说明 | 示例 | | --- | -- | -- | ----- | ------- | - | -------- | | || | 字符串连接 | 'Hello' || ' World' |

示例

declare
  first_name varchar2(20) := 'Oracle';
  last_name  varchar2(20) := 'PLSQL';
begin
  dbms_output.put_line(first_name || ' ' || last_name);
end;
/

7. 运算符优先级

当一个表达式中包含多个运算符时,PL/SQL 会按照 运算符优先级 依次计算。

常见优先级顺序(由高到低)

优先级 运算符
1 **
2 + (正), - (负)
3 *, /
4 +, -
5 =, !=, <, >, <=, >=
6 NOT
7 AND
8 OR

📌 建议:

  • 在复杂表达式中 使用括号明确计算顺序,可读性和安全性更高

示例

-- 不推荐(容易误解)
if a + b * c > 100 then
  ...
end if;

-- 推荐
if (a + (b * c)) > 100 then
  ...
end if;

8. 本章小结

  • 算术运算符用于数值计算(+ - * / **)
  • 关系运算符返回 BOOLEAN,用于条件判断
  • NULL 判断必须使用 IS NULL / IS NOT NULL
  • 逻辑运算符用于组合条件(AND / OR / NOT)
  • 字符串使用 || 进行连接
  • 理解运算符优先级,复杂表达式应使用括号