Oracle PL/SQL例13:比较运算符

勤奋不是嘴上说说而已,而是实际的行动,在勤奋的苦度中持之以恒,永不退却。业精于勤,荒于嬉;行成于思,毁于随。在人生的仕途上,我们毫不迟疑地选择勤奋,她是几乎于世界上一切成就的催产婆。只要我们拥着勤奋去思考,拥着勤奋的手去耕耘,用抱勤奋的心去对待工作,浪迹红尘而坚韧不拔,那么,我们的生命就会绽放火花,让人生的时光更加的闪亮而精彩。

导读:本篇文章讲解 Oracle PL/SQL例13:比较运算符,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

【免责声明】文章仅供学习交流,观点代表个人,与任何公司无关。
编辑|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 还提供了三种其他比较运算符:LIKEBETWEENIN。这些运算符同样广泛应用于 PL/SQL 中的各种数据类型。下面,我们来分别介绍这三种运算符的使用方法。

  1. 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 过程已成功完成。

在上面的示例中,我们使用了 %_ 两个通配符来匹配字符类型数据中的内容。当条件成立时,输出相应的信息。

  1. 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 运算符来检查一个年龄值是否在指定的范围内。当条件成立时,输出相应的信息。

  1. 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 运算符来检查一个年龄值是否在指定的列表内。当条件成立时,输出相应的信息。

LIKEBETWEENIN 运算符是 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;
/
 

输出结果:

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://docs.oracle.com/en/database/oracle/oracle-database/19/lnpls/plsql-language-fundamentals.html#GUID-319604CE-DC1C-49DF-9377-007C312F3B32

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/141586.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!