PL/SQL - 運算子

Hello, 有志青年程序設計師!今天,我們將踏上一段令人振奮的旅程,探索 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

邏輯運算子

邏輯運算子允許我們組合多個條件。它們就像日常語言中的 "和" 和 "或",當我們描述複雜情況時會用到。

下面是 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 運算子的優先級,從最高到最低:

  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