- PL/SQL 教程
- PL/SQL - 首页
- PL/SQL - 概述
- PL/SQL - 环境
- PL/SQL - 基本语法
- PL/SQL - 数据类型
- PL/SQL - 变量
- PL/SQL - 常量和字面量
- PL/SQL - 运算符
- PL/SQL - 条件语句
- PL/SQL - 循环语句
- PL/SQL - 字符串
- PL/SQL - 数组
- PL/SQL - 过程
- PL/SQL - 函数
- PL/SQL - 游标
- PL/SQL - 记录
- PL/SQL - 异常处理
- PL/SQL - 触发器
- PL/SQL - 包
- PL/SQL - 集合
- PL/SQL - 事务
- PL/SQL - 日期和时间
- PL/SQL - DBMS 输出
- PL/SQL - 面向对象
- PL/SQL 有用资源
- PL/SQL - 问答
- PL/SQL - 快速指南
- PL/SQL - 有用资源
- PL/SQL - 讨论
PL/SQL - 运算符
本章将讨论 PL/SQL 中的运算符。运算符是一个符号,它告诉编译器执行特定的数学或逻辑操作。PL/SQL 语言富含内置运算符,并提供以下类型的运算符:
- 算术运算符
- 关系运算符
- 比较运算符
- 逻辑运算符
- 字符串运算符
这里,我们将逐一了解算术、关系、比较和逻辑运算符。字符串运算符将在后面的章节中讨论 - **PL/SQL - 字符串**。
算术运算符
下表显示了 PL/SQL 支持的所有算术运算符。假设**变量 A** 为 10,**变量 B** 为 5,则:
运算符 | 描述 | 示例 |
---|---|---|
+ | 加法运算,将两个操作数相加 | A + B 将得到 15 |
- | 减法运算,从第一个操作数中减去第二个操作数 | A - B 将得到 5 |
* | 乘法运算,将两个操作数相乘 | A * B 将得到 50 |
/ | 除法运算,用分子除以分母 | A / B 将得到 2 |
** | 幂运算符,将一个操作数提高到另一个操作数的幂 | A ** B 将得到 100000 |
关系运算符
关系运算符比较两个表达式或值,并返回布尔结果。下表显示了 PL/SQL 支持的所有关系运算符。假设**变量 A** 为 10,**变量 B** 为 20,则:
运算符 | 描述 | 示例 |
---|---|---|
= | 检查两个操作数的值是否相等,如果相等则条件为真。 | (A = B) 为假。 |
!= <> ~= |
检查两个操作数的值是否不相等,如果不相等则条件为真。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 | (A > B) 为假。 |
< | 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 | (A < B) 为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 | (A >= B) 为假。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 | (A <= B) 为真 |
比较运算符
比较运算符用于比较一个表达式与另一个表达式。结果始终为**TRUE、FALSE** 或**NULL**。
运算符 | 描述 | 示例 |
---|---|---|
LIKE | LIKE 运算符将字符、字符串或 CLOB 值与模式进行比较,如果值与模式匹配则返回 TRUE,否则返回 FALSE。 | 如果 'Zara Ali' like 'Z% A_i' 返回布尔值 true,而 'Nuha Ali' like 'Z% A_i' 返回布尔值 false。 |
BETWEEN | BETWEEN 运算符测试值是否在指定的范围内。x BETWEEN a AND b 表示 x >= a 且 x <= b。 | 如果 x = 10,则 x between 5 and 20 返回 true,x between 5 and 10 返回 true,但 x between 11 and 20 返回 false。 |
IN | IN 运算符测试集合成员资格。x IN (set) 表示 x 等于集合的任何成员。 | 如果 x = 'm',则 x in ('a', 'b', 'c') 返回布尔值 false,但 x in ('m', 'n', 'o') 返回布尔值 true。 |
IS NULL | IS NULL 运算符如果其操作数为 NULL 则返回布尔值 TRUE,如果不为 NULL 则返回 FALSE。涉及 NULL 值的比较始终产生 NULL。 | 如果 x = 'm',则 'x is null' 返回布尔值 false。 |
逻辑运算符
下表显示了 PL/SQL 支持的逻辑运算符。所有这些运算符都作用于布尔操作数并产生布尔结果。假设**变量 A** 为 true,**变量 B** 为 false,则:
运算符 | 描述 | 示例 |
---|---|---|
and | 称为逻辑 AND 运算符。如果两个操作数都为真,则条件为真。 | (A and B) 为假。 |
or | 称为逻辑 OR 运算符。如果两个操作数中的任何一个为真,则条件为真。 | (A or B) 为真。 |
not | 称为逻辑 NOT 运算符。用于反转其操作数的逻辑状态。如果条件为真,则逻辑 NOT 运算符将使其变为假。 | not (A and B) 为真。 |
PL/SQL 运算符优先级
运算符优先级决定了表达式中术语的分组。这会影响表达式的计算方式。某些运算符比其他运算符具有更高的优先级;例如,乘法运算符比加法运算符具有更高的优先级。
例如,**x = 7 + 3 * 2**;这里,**x** 被赋值为**13**,而不是 20,因为运算符 * 的优先级高于 +,所以它首先与**3*2** 相乘,然后加到**7** 中。
这里,优先级最高的运算符出现在表的最上面,优先级最低的运算符出现在表的最下面。在表达式中,将首先计算优先级较高的运算符。
运算符的优先级如下:=, <, >, <=, >=, <>, !=, ~ =, ^=, IS NULL, LIKE, BETWEEN, IN。
运算符 | 操作 |
---|---|
** | 幂运算 |
+, - | 恒等式,否定 |
*, / | 乘法,除法 |
+, -, || | 加法,减法,连接 |
比较 | |
NOT | 逻辑否定 |
AND | 合取 |
OR | 包含 |
广告