PL/SQL - 运算符
你好,有抱负的程序员们!今天,我们将踏上一段激动人心的旅程,探索PL/SQL运算符的世界。如果你之前从未编写过一行代码,也不用担心——我们将从最基础的知识开始,逐步学习。在本教程结束时,你将能够像专业人士一样操作数据!
算术运算符
让我们从熟悉的内容开始:数学!PL/SQL的算术运算符和你在学校学到的运算符一样。它们允许我们在数字上执行基本的数学运算。
以下是PL/SQL中的算术运算符表:
运算符 | 描述 | 示例 |
---|---|---|
+ | 加法 | 5 + 3 = 8 |
- | 减法 | 10 - 4 = 6 |
* | 乘法 | 3 * 4 = 12 |
/ | 除法 | 15 / 3 = 5 |
** | 幂运算 | 2 ** 3 = 8 |
让我们通过一个简单的PL/SQL代码示例来观察这些运算符的使用:
DECLARE
num1 NUMBER := 10;
num2 NUMBER := 5;
result NUMBER;
BEGIN
result := num1 + num2;
DBMS_OUTPUT.PUT_LINE('加法: ' || result);
result := num1 - num2;
DBMS_OUTPUT.PUT_LINE('减法: ' || result);
result := num1 * num2;
DBMS_OUTPUT.PUT_LINE('乘法: ' || result);
result := num1 / num2;
DBMS_OUTPUT.PUT_LINE('除法: ' || result);
result := num1 ** 2;
DBMS_OUTPUT.PUT_LINE('幂运算: ' || result);
END;
在这个示例中,我们声明了两个变量num1
和num2
,然后对它们执行各种算术运算。结果将被打印到输出中。
当你运行这段代码时,你将看到:
加法: 15
减法: 5
乘法: 50
除法: 2
幂运算: 100
关系运算符
现在,让我们转向关系运算符。这些运算符用于比较两个值并确定它们之间的关系。它们就像你在比较事物时提出的问题:“这个比那个大吗?”或者“这两者相同吗?”
以下是PL/SQL中的关系运算符表:
运算符 | 描述 | 示例 |
---|---|---|
= | 等于 | 5 = 5 为真 |
<> | 不等于 | 5 <> 3 为真 |
< | 小于 | 3 < 5 为真 |
> | 大于 | 5 > 3 为真 |
<= | 小于或等于 | 3 <= 3 为真 |
>= | 大于或等于 | 5 >= 5 为真 |
让我们看看它们的使用:
DECLARE
a NUMBER := 10;
b NUMBER := 20;
BEGIN
IF a = b THEN
DBMS_OUTPUT.PUT_LINE('a 等于 b');
ELSIF a < b THEN
DBMS_OUTPUT.PUT_LINE('a 小于 b');
ELSE
DBMS_OUTPUT.PUT_LINE('a 大于 b');
END IF;
IF a <> b THEN
DBMS_OUTPUT.PUT_LINE('a 不等于 b');
END IF;
END;
这段代码使用关系运算符比较a
和b
。当你运行它时,你将看到:
a 小于 b
a 不等于 b
比较运算符
PL/SQL中的比较运算符与关系运算符非常相似,但它们具有一些额外的功能,特别是对于处理NULL值和跨不同数据类型进行比较。
以下是比较运算符表:
运算符 | 描述 |
---|---|
IS NULL | 检查一个值是否为NULL |
IS NOT NULL | 检查一个值是否不为NULL |
LIKE | 模式匹配 |
BETWEEN | 检查一个值是否在范围内 |
IN | 检查一个值是否匹配列表中的任何一个值 |
让我们看一个示例:
DECLARE
name VARCHAR2(20) := 'John Doe';
age NUMBER := 25;
BEGIN
IF name IS NOT NULL THEN
DBMS_OUTPUT.PUT_LINE('Name is: ' || name);
END IF;
IF name LIKE 'J%' THEN
DBMS_OUTPUT.PUT_LINE('Name starts with J');
END IF;
IF age BETWEEN 20 AND 30 THEN
DBMS_OUTPUT.PUT_LINE('Age is between 20 and 30');
END IF;
IF age IN (25, 30, 35) THEN
DBMS_OUTPUT.PUT_LINE('Age is 25, 30, or 35');
END IF;
END;
这段代码演示了各种比较运算符。当你运行它时,你将看到:
Name is: John Doe
Name starts with J
Age is between 20 and 30
Age is 25, 30, or 35
逻辑运算符
逻辑运算符允许我们组合多个条件。它们就像日常语言中的“和”和“或”,当我们描述复杂情况时使用的词汇。
以下是逻辑运算符表:
运算符 | 描述 |
---|---|
AND | 如果两个条件都为真,则为真 |
OR | 如果任一条件为真,则为真 |
NOT | 反转条件的结果 |
让我们看看它们的使用:
DECLARE
age NUMBER := 25;
has_license BOOLEAN := TRUE;
BEGIN
IF age >= 18 AND has_license THEN
DBMS_OUTPUT.PUT_LINE('You can drive a car');
END IF;
IF age < 18 OR NOT has_license THEN
DBMS_OUTPUT.PUT_LINE('You cannot drive a car');
ELSE
DBMS_OUTPUT.PUT_LINE('You can drive a car');
END IF;
END;
这段代码根据年龄和是否有驾照来检查一个人是否可以开车。当你运行它时,你将看到:
You can drive a car
You can drive a car
PL/SQL运算符优先级
就像在数学中一样,PL/SQL运算符有一个特定的评估顺序,这称为运算符优先级。理解这一点对于编写正确且可预测的代码至关重要。
以下是PL/SQL中运算符的优先级,从最高到最低:
- 幂运算 (**)
- 乘法 (*)、除法 (/)
- 加法 (+)、减法 (-)
- 比较运算符 (=, <>, <, >, <=, >=)
- IS NULL, LIKE, BETWEEN, IN
- NOT
- AND
- OR
让我们看一个如何工作的示例:
DECLARE
result BOOLEAN;
BEGIN
result := 5 > 3 AND 10 / 2 = 5 OR NOT (2 + 2 = 4);
IF result THEN
DBMS_OUTPUT.PUT_LINE('The result is TRUE');
ELSE
DBMS_OUTPUT.PUT_LINE('The result is FALSE');
END IF;
END;
在这个示例中,表达式按以下顺序评估:
- 10 / 2 = 5 (除法,然后比较)
- 5 > 3 (比较)
- 2 + 2 = 4 (加法,然后比较)
- NOT (2 + 2 = 4) (逻辑NOT)
- 5 > 3 AND 10 / 2 = 5 (逻辑AND)
- 结果步骤5 OR 结果步骤4 (逻辑OR)
当你运行这段代码时,你将看到:
The result is TRUE
到这里,我们已经涵盖了PL/SQL中的主要运算符类型。记住,熟能生巧。尝试编写你自己的代码示例,并尝试不同的运算符组合。在你意识到之前,你将能够轻松地编写复杂的PL/SQL语句!
Credits: Image by storyset