系列文章目录
Oracle PL/SQL基础语法学习12:短路求值
Oracle PL/SQL基础语法学习13:比较运算符
Oracle PL/SQL基础语法学习14:BOOLEAN表达式
【免责声明】文章仅供学习交流,观点代表个人,与任何公司无关。
编辑|SQL和数据库技术(ID:SQLplusDB)
Oracle PL/SQL基础语法学习13:比较运算符
比较运算符介绍
比较运算符是 PL/SQL 语言中的基本元素之一,它们被用于比较两个变量或表达式的值。在 PL/SQL 中,比较运算符是十分常见的,因此熟练运用它们能够提高代码的开发效率。
PL/SQL 中提供了六个比较运算符:=
, !=
(或 <>
),<
, <=
, >
, >=
。这些运算符可以用在各种数据类型上,包括数字、字符、日期等类型。下面是一些示例:
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 过程已成功完成。
在上面的示例中,我们分别使用了 <
, !=
(或 <>
)和 >=
三种比较运算符,用于比较数字、字符和日期类型的数据。当条件成立时,输出相应的信息。
需要注意的是,在比较字符类型的数据时,应该使用单引号将其括起来,否则编译器将会把它们看做标识符。同时,日期类型的数据需要使用 TO_DATE
函数将字符串转换为日期类型。
此外,还有一种比较运算符叫做 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 中的各种数据类型。下面,我们来分别介绍这三种运算符的使用方法。
- LIKE 运算符
LIKE
运算符用于在字符类型数据中进行模糊匹配。例如,我们可以使用 %
来代表匹配任意字符,使用 _
来代表匹配单个字符。下面是一个示例:
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 过程已成功完成。
在上面的示例中,我们使用了 %
和 _
两个通配符来匹配字符类型数据中的内容。当条件成立时,输出相应的信息。
- 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 中常用的比较运算符之一,它们分别用于在字符类型数据中进行模糊匹配、检查一个值是否在两个指定的值范围内、检查一个值是否在一个指定的值列表内。
总的来说,比较运算符是 PL/SQL 中的重要组成部分。熟练掌握这些运算符能够帮助我们更快、更准确地开发代码,提高程序的效率。
(注:以上内容包括部分智能聊天机器人生成的内容)
官方文档比较运算符代码例
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;
/
输出结果:文章来源:https://www.toymoban.com/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
参考:文章来源地址https://www.toymoban.com/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模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!