PL/SQL - 运算符

你好,有抱负的程序员们!今天,我们将踏上一段激动人心的旅程,探索PL/SQL运算符的世界。如果你之前从未编写过一行代码,也不用担心——我们将从最基础的知识开始,逐步学习。在本教程结束时,你将能够像专业人士一样操作数据!

PL/SQL - Operators

算术运算符

让我们从熟悉的内容开始:数学!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;

在这个示例中,我们声明了两个变量num1num2,然后对它们执行各种算术运算。结果将被打印到输出中。

当你运行这段代码时,你将看到:

加法: 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;

这段代码使用关系运算符比较ab。当你运行它时,你将看到:

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中运算符的优先级,从最高到最低:

  1. 幂运算 (**)
  2. 乘法 (*)、除法 (/)
  3. 加法 (+)、减法 (-)
  4. 比较运算符 (=, <>, <, >, <=, >=)
  5. IS NULL, LIKE, BETWEEN, IN
  6. NOT
  7. AND
  8. 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;

在这个示例中,表达式按以下顺序评估:

  1. 10 / 2 = 5 (除法,然后比较)
  2. 5 > 3 (比较)
  3. 2 + 2 = 4 (加法,然后比较)
  4. NOT (2 + 2 = 4) (逻辑NOT)
  5. 5 > 3 AND 10 / 2 = 5 (逻辑AND)
  6. 结果步骤5 OR 结果步骤4 (逻辑OR)

当你运行这段代码时,你将看到:

The result is TRUE

到这里,我们已经涵盖了PL/SQL中的主要运算符类型。记住,熟能生巧。尝试编写你自己的代码示例,并尝试不同的运算符组合。在你意识到之前,你将能够轻松地编写复杂的PL/SQL语句!

Credits: Image by storyset