系列文章目录

Oracle PL/SQL基础语法学习12:短路求值
Oracle PL/SQL基础语法学习13:比较运算符
Oracle PL/SQL基础语法学习14:BOOLEAN表达式


文章目录

  • 系列文章目录
  • Oracle PL/SQL基础语法学习13:比较运算符
    • 比较运算符介绍
    • 官方文档比较运算符代码例
      • Example 2-43 Relational Operators in Expressions
      • Example 2-44 LIKE Operator in Expression
      • Example 2-45 Escape Character in Pattern
      • Example 2-46 BETWEEN Operator in Expressions
      • Example 2-47 IN Operator in Expressions
      • Example 2-48 IN Operator with Sets with NULL Values

【免责声明】文章仅供学习交流,观点代表个人,与任何公司无关。
编辑|SQL和数据库技术(ID:SQLplusDB)

Oracle PL/SQL基础语法学习13:比较运算符

比较运算符介绍

比较运算符是 PL/SQL 语言中的基本元素之一,它们被用于比较两个变量或表达式的值。在 PL/SQL 中,比较运算符是十分常见的,因此熟练运用它们能够提高代码的开发效率。

PL/SQL 中提供了六个比较运算符:=, !=(或 <>),<, <=, >, >=。这些运算符可以用在各种数据类型上,包括数字、字符、日期等类型。下面是一些示例:

DECLAREa NUMBER := 100;b NUMBER := 50;c VARCHAR2(10) := 'hello';
BEGINIF a > b THENDBMS_OUTPUT.PUT_LINE('a is greater than b');END IF;IF c != 'world' THENDBMS_OUTPUT.PUT_LINE('c is not equal to world');END IF;IF SYSDATE >= TO_DATE('2022-01-01', 'YYYY-MM-DD') THENDBMS_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 2022PL/SQL 过程已成功完成。

在上面的示例中,我们分别使用了 <, !=(或 <>)和 >= 三种比较运算符,用于比较数字、字符和日期类型的数据。当条件成立时,输出相应的信息。

需要注意的是,在比较字符类型的数据时,应该使用单引号将其括起来,否则编译器将会把它们看做标识符。同时,日期类型的数据需要使用 TO_DATE 函数将字符串转换为日期类型。

此外,还有一种比较运算符叫做 IS NULL,用于判断变量或表达式是否为空。例如:

DECLAREa NUMBER;
BEGINIF a IS NULL THENDBMS_OUTPUT.PUT_LINE('a is null');END IF;
END;

输出结果:

SQL> set serverout on
SQL> /
a is nullPL/SQL 过程已成功完成。

在上面示例中,当 a 为空时,条件成立,输出信息。

除了前面提到的六种比较运算符,PL/SQL 还提供了三种其他比较运算符:LIKEBETWEENIN。这些运算符同样广泛应用于 PL/SQL 中的各种数据类型。下面,我们来分别介绍这三种运算符的使用方法。

  1. LIKE 运算符

LIKE 运算符用于在字符类型数据中进行模糊匹配。例如,我们可以使用 % 来代表匹配任意字符,使用 _ 来代表匹配单个字符。下面是一个示例:

DECLAREname VARCHAR2(10) := 'Mary';
BEGINIF name LIKE 'Ma%' THENDBMS_OUTPUT.PUT_LINE('name starts with Ma');END IF;IF name LIKE '%r%' THENDBMS_OUTPUT.PUT_LINE('name contains r');END IF;IF name LIKE '__ry' THENDBMS_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 twoPL/SQL 过程已成功完成。

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

  1. BETWEEN 运算符

BETWEEN 运算符用于检查一个值是否在两个指定的值范围内。下面是一个示例:

DECLAREage NUMBER := 20;
BEGINIF age BETWEEN 18 AND 30 THENDBMS_OUTPUT.PUT_LINE('age is between 18 and 30');END IF;
END;

输出结果:

SQL> /
age is between 18 and 30PL/SQL 过程已成功完成。

在上面的示例中,我们使用了 BETWEEN 运算符来检查一个年龄值是否在指定的范围内。当条件成立时,输出相应的信息。

  1. IN 运算符

IN 运算符用于检查一个值是否在一个指定的值列表内。下面是一个示例:

DECLAREage NUMBER := 15;
BEGINIF age IN (18, 21, 25) THENDBMS_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

BEGINprint_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

DECLAREPROCEDURE compare (value   VARCHAR2,pattern VARCHAR2) ISBEGINIF value LIKE pattern THENDBMS_OUTPUT.PUT_LINE ('TRUE');ELSEDBMS_OUTPUT.PUT_LINE ('FALSE');END IF;END;
BEGINcompare('Johnson', 'J%s_n');compare('Johnson', 'J%S_N');
END;
/

输出结果:

TRUE
FALSE

Example 2-45 Escape Character in Pattern

DECLAREPROCEDURE half_off (sale_sign VARCHAR2) ISBEGINIF sale_sign LIKE '50\% off!' ESCAPE '\' THENDBMS_OUTPUT.PUT_LINE ('TRUE');ELSEDBMS_OUTPUT.PUT_LINE ('FALSE');END IF;END;
BEGINhalf_off('Going out of business!');half_off('50% off!');
END;
/

输出结果:

FALSE
TRUE

Example 2-46 BETWEEN Operator in Expressions

BEGINprint_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

DECLAREletter VARCHAR2(1) := 'm';
BEGINprint_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

DECLAREa INTEGER; -- Initialized to NULL by defaultb INTEGER := 10;c INTEGER := 100;
BEGINprint_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

Oracle PL/SQL基础语法学习13:比较运算符相关推荐

  1. Oracle PL/SQL基础知识

    Oracle PL/SQL基础知识 过程(存储过程) 过程用于执行特定的操作,当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out).通过在过程中使用输入参数,可以将数据传递到执行部分 ...

  2. SQL基础语法学习总结

    本篇博客对于sql的基础语法做一个总结,学的东西太多太杂,总是不能记住太多东西,所以很多东西,会用,但是背不下来,毕竟不可能把所有语法和关键字都背完啊,本篇文章呢就用通俗易懂的话做一个基础知识的总结. ...

  3. oracle pl/sql 基础

    PL/SQL笔记 PL/SQL块中只能直接嵌入SELECT,DML(INSERT,UPDATE,DELETE)以及事务控制语句(COMMIT,ROLLBACK,SAVEPOINT),而不能直接嵌入DD ...

  4. Oracle PL/SQL语句基础学习笔记(上)

    PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL ...

  5. ORACLE甚而,PL/SQL基础

    Oracle PL/SQL语言基础 PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用 ...

  6. Oracle PL/SQL语言初级教程(自学)

    Oracle PL/SQL语言初级教程 PL/SQL 语言基础 PL/SQL 是一种高性能的基于事务处理的语言,能运行在任何 ORACLE 环境中,支持所有数据处理命令. 通过使用 PL/SQL 程序 ...

  7. 在Oracle中不通过存储过程一次执行多条SQL语句Oracle PL/SQL

    PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL ...

  8. SQL高级语法学习总结(一)

    基础语法呢,就是简单的对行列进行增删改查,看上一篇.SQL基础语法学习总结,高级用法无非是条件更多,能实现的需求更多,其中涉及到非常多的关键字,本篇博客就进行一下总结.本文所有用法均在mysql环境下 ...

  9. oracle 的遍历语法,oracle pl/sql之pl/sql语法

    一.pl/sql基础 pl/sql分匿名块和命名块. 命名块:存储过程,函数,触发器,包等. pl/sql语句块分3部分: (1)声明部分 (2)可执行部分 (3)异常处理部分 其中可执行部分是语句块 ...

最新文章

  1. Linux系统中创建虚拟环境详解
  2. 互联网电商老三巨头在网站推广下逐步退居幕后新三巨头蓄势待发
  3. .net通过一般处理程序模拟用户控件数据保持、Ispostback 【第二版将html与ashx文件分开】...
  4. Scala模式匹配:条件守卫
  5. 雪花算法原理_低照度摄像机原理及影响图像效果因素
  6. JavaScript事件处理的三种方式(转)
  7. day39-Spring 05-Spring的AOP:不带有切点的切面
  8. 超大文本文件怎么打开(使用Hex Editor)
  9. 小米游戏本0909bios_小米笔记本电脑全家族介绍
  10. 滤波笔记四:扩展卡尔曼滤波
  11. 任务:单片机扩展一片DAC0832,实现一路三角波发生器。
  12. 2015年4月25日浙江省ACM比赛题解
  13. 常见浏览器对URL的长度限制
  14. html是什么排列规律,单数和双数是什么 有什么排列规律
  15. STM32HAL库-移植mbedtls开源库示例(一)
  16. JavaScript 文件下载解决方案-download.js
  17. 收藏多个不错的画架构图工具
  18. 51单片机——存储器
  19. 调功器PA400X系列选型+个人理解
  20. poi如何去写入excel文件

热门文章

  1. MTK6762 gpio控制
  2. 罗斌_赢在中国第三赛季1080榜单 (2007/09/26 18:59)
  3. 原假设“截距为0”双侧检验P值是多少_参数假设检验
  4. 660万明文密码泄露,知名广告公司Clixsence被黑客端了个底朝天
  5. echarts副标题 富文本标签
  6. 如何不冒昧的问妹子年龄又能清楚的知道她多大呢?Python来告诉你。
  7. 如何解决eclipse中没有代码提示的问题
  8. (转)一些经典的计算机书籍
  9. 用python对股票进行可视化分析_使用Python对股票进行可视化分析
  10. 1、网上找的win7 hook winlogon实现禁用CTRL+ALT+DEL