系列文章目錄
Oracle PL/SQL基礎語法學習12:短路求值
Oracle PL/SQL基礎語法學習13:比較運算符
Oracle PL/SQL基礎語法學習14:BOOLEAN表達式
【免責聲明】文章僅供學習交流,觀點代表個人,與任何公司無關。
編輯|SQL和數(shù)據(jù)庫技術(ID:SQLplusDB)
Oracle PL/SQL基礎語法學習13:比較運算符
比較運算符介紹
比較運算符是 PL/SQL 語言中的基本元素之一,它們被用于比較兩個變量或表達式的值。在 PL/SQL 中,比較運算符是十分常見的,因此熟練運用它們能夠提高代碼的開發(fā)效率。
PL/SQL 中提供了六個比較運算符:=
, !=
(或 <>
),<
, <=
, >
, >=
。這些運算符可以用在各種數(shù)據(jù)類型上,包括數(shù)字、字符、日期等類型。下面是一些示例:
DECLARE
a NUMBER := 100;
b NUMBER := 50;
c VARCHAR2(10) := 'hello';
BEGIN
IF a > b THEN
DBMS_OUTPUT.PUT_LINE('a is greater than b');
END IF;
IF c != 'world' THEN
DBMS_OUTPUT.PUT_LINE('c is not equal to world');
END IF;
IF SYSDATE >= TO_DATE('2022-01-01', 'YYYY-MM-DD') THEN
DBMS_OUTPUT.PUT_LINE('It is in or after the year 2022');
END IF;
END;
輸出結果:
SQL> set serverout on
SQL> /
a is greater than b
c is not equal to world
It is in or after the year 2022
PL/SQL 過程已成功完成。
在上面的示例中,我們分別使用了 <
, !=
(或 <>
)和 >=
三種比較運算符,用于比較數(shù)字、字符和日期類型的數(shù)據(jù)。當條件成立時,輸出相應的信息。
需要注意的是,在比較字符類型的數(shù)據(jù)時,應該使用單引號將其括起來,否則編譯器將會把它們看做標識符。同時,日期類型的數(shù)據(jù)需要使用 TO_DATE
函數(shù)將字符串轉換為日期類型。
此外,還有一種比較運算符叫做 IS NULL
,用于判斷變量或表達式是否為空。例如:
DECLARE
a NUMBER;
BEGIN
IF a IS NULL THEN
DBMS_OUTPUT.PUT_LINE('a is null');
END IF;
END;
輸出結果:
SQL> set serverout on
SQL> /
a is null
PL/SQL 過程已成功完成。
在上面示例中,當 a
為空時,條件成立,輸出信息。
除了前面提到的六種比較運算符,PL/SQL 還提供了三種其他比較運算符:LIKE
、BETWEEN
和 IN
。這些運算符同樣廣泛應用于 PL/SQL 中的各種數(shù)據(jù)類型。下面,我們來分別介紹這三種運算符的使用方法。
- LIKE 運算符
LIKE
運算符用于在字符類型數(shù)據(jù)中進行模糊匹配。例如,我們可以使用 %
來代表匹配任意字符,使用 _
來代表匹配單個字符。下面是一個示例:
DECLARE
name VARCHAR2(10) := 'Mary';
BEGIN
IF name LIKE 'Ma%' THEN
DBMS_OUTPUT.PUT_LINE('name starts with Ma');
END IF;
IF name LIKE '%r%' THEN
DBMS_OUTPUT.PUT_LINE('name contains r');
END IF;
IF name LIKE '__ry' THEN
DBMS_OUTPUT.PUT_LINE('name has four characters with ry as the last two');
END IF;
END;
輸出結果:
SQL> /
name starts with Ma
name contains r
name has four characters with ry as the last two
PL/SQL 過程已成功完成。
在上面的示例中,我們使用了 %
和 _
兩個通配符來匹配字符類型數(shù)據(jù)中的內容。當條件成立時,輸出相應的信息。
- BETWEEN 運算符
BETWEEN
運算符用于檢查一個值是否在兩個指定的值范圍內。下面是一個示例:
DECLARE
age NUMBER := 20;
BEGIN
IF age BETWEEN 18 AND 30 THEN
DBMS_OUTPUT.PUT_LINE('age is between 18 and 30');
END IF;
END;
輸出結果:
SQL> /
age is between 18 and 30
PL/SQL 過程已成功完成。
在上面的示例中,我們使用了 BETWEEN
運算符來檢查一個年齡值是否在指定的范圍內。當條件成立時,輸出相應的信息。
- IN 運算符
IN
運算符用于檢查一個值是否在一個指定的值列表內。下面是一個示例:
DECLARE
age NUMBER := 15;
BEGIN
IF age IN (18, 21, 25) THEN
DBMS_OUTPUT.PUT_LINE('age is 18, 21, or 25');
END IF;
END;
在上面的示例中,我們使用了 IN
運算符來檢查一個年齡值是否在指定的列表內。當條件成立時,輸出相應的信息。
LIKE
、BETWEEN
和 IN
運算符是 PL/SQL 中常用的比較運算符之一,它們分別用于在字符類型數(shù)據(jù)中進行模糊匹配、檢查一個值是否在兩個指定的值范圍內、檢查一個值是否在一個指定的值列表內。
總的來說,比較運算符是 PL/SQL 中的重要組成部分。熟練掌握這些運算符能夠幫助我們更快、更準確地開發(fā)代碼,提高程序的效率。
(注:以上內容包括部分智能聊天機器人生成的內容)
官方文檔比較運算符代碼例
Example 2-43 Relational Operators in Expressions
BEGIN
print_boolean ('(2 + 2 = 4)', 2 + 2 = 4);
print_boolean ('(2 + 2 <> 4)', 2 + 2 <> 4);
print_boolean ('(2 + 2 != 4)', 2 + 2 != 4);
print_boolean ('(2 + 2 ~= 4)', 2 + 2 ~= 4);
print_boolean ('(2 + 2 ^= 4)', 2 + 2 ^= 4);
print_boolean ('(1 < 2)', 1 < 2);
print_boolean ('(1 > 2)', 1 > 2);
print_boolean ('(1 <= 2)', 1 <= 2);
print_boolean ('(1 >= 1)', 1 >= 1);
END;
/
輸出結果:
(2 + 2 = 4) = TRUE
(2 + 2 <> 4) = FALSE
(2 + 2 != 4) = FALSE
(2 + 2 ~= 4) = FALSE
(2 + 2 ^= 4) = FALSE
(1 < 2) = TRUE
(1 > 2) = FALSE
(1 <= 2) = TRUE
(1 >= 1) = TRUE
Example 2-44 LIKE Operator in Expression
DECLARE
PROCEDURE compare (
value VARCHAR2,
pattern VARCHAR2
) IS
BEGIN
IF value LIKE pattern THEN
DBMS_OUTPUT.PUT_LINE ('TRUE');
ELSE
DBMS_OUTPUT.PUT_LINE ('FALSE');
END IF;
END;
BEGIN
compare('Johnson', 'J%s_n');
compare('Johnson', 'J%S_N');
END;
/
輸出結果:
TRUE
FALSE
Example 2-45 Escape Character in Pattern
DECLARE
PROCEDURE half_off (sale_sign VARCHAR2) IS
BEGIN
IF sale_sign LIKE '50\% off!' ESCAPE '\' THEN
DBMS_OUTPUT.PUT_LINE ('TRUE');
ELSE
DBMS_OUTPUT.PUT_LINE ('FALSE');
END IF;
END;
BEGIN
half_off('Going out of business!');
half_off('50% off!');
END;
/
輸出結果:
FALSE
TRUE
Example 2-46 BETWEEN Operator in Expressions
BEGIN
print_boolean ('2 BETWEEN 1 AND 3', 2 BETWEEN 1 AND 3);
print_boolean ('2 BETWEEN 2 AND 3', 2 BETWEEN 2 AND 3);
print_boolean ('2 BETWEEN 1 AND 2', 2 BETWEEN 1 AND 2);
print_boolean ('2 BETWEEN 3 AND 4', 2 BETWEEN 3 AND 4);
END;
/
輸出結果:
2 BETWEEN 1 AND 3 = TRUE
2 BETWEEN 2 AND 3 = TRUE
2 BETWEEN 1 AND 2 = TRUE
2 BETWEEN 3 AND 4 = FALSE
Example 2-47 IN Operator in Expressions
DECLARE
letter VARCHAR2(1) := 'm';
BEGIN
print_boolean (
'letter IN (''a'', ''b'', ''c'')',
letter IN ('a', 'b', 'c')
);
print_boolean (
'letter IN (''z'', ''m'', ''y'', ''p'')',
letter IN ('z', 'm', 'y', 'p')
);
END;
/
輸出結果:
letter IN ('a', 'b', 'c') = FALSE
letter IN ('z', 'm', 'y', 'p') = TRUE
Example 2-48 IN Operator with Sets with NULL Values
DECLARE
a INTEGER; -- Initialized to NULL by default
b INTEGER := 10;
c INTEGER := 100;
BEGIN
print_boolean ('100 IN (a, b, c)', 100 IN (a, b, c));
print_boolean ('100 NOT IN (a, b, c)', 100 NOT IN (a, b, c));
print_boolean ('100 IN (a, b)', 100 IN (a, b));
print_boolean ('100 NOT IN (a, b)', 100 NOT IN (a, b));
print_boolean ('a IN (a, b)', a IN (a, b));
print_boolean ('a NOT IN (a, b)', a NOT IN (a, b));
END;
/
輸出結果:文章來源:http://www.zghlxwxcb.cn/news/detail-452074.html
100 IN (a, b, c) = TRUE
100 NOT IN (a, b, c) = FALSE
100 IN (a, b) = NULL
100 NOT IN (a, b) = NULL
a IN (a, b) = NULL
a NOT IN (a, b) = NULL
參考:文章來源地址http://www.zghlxwxcb.cn/news/detail-452074.html
https://docs.oracle.com/en/database/oracle/oracle-database/19/lnpls/plsql-language-fundamentals.html#GUID-319604CE-DC1C-49DF-9377-007C312F3B32
到了這里,關于Oracle PL/SQL基礎語法學習13:比較運算符的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!