PL/SQL - 運算子
Hello, 有志青年程序設計師!今天,我們將踏上一段令人振奮的旅程,探索 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
邏輯運算子
邏輯運算子允許我們組合多個條件。它們就像日常語言中的 "和" 和 "或",當我們描述複雜情況時會用到。
下面是 PL/SQL 中的邏輯運算子表:
運算子 | 說明 |
---|---|
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