Oracle PL/SQL基础语法学习13:比较运算符
系列文章目录
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 还提供了三种其他比较运算符:LIKE、BETWEEN 和 IN。这些运算符同样广泛应用于 PL/SQL 中的各种数据类型。下面,我们来分别介绍这三种运算符的使用方法。
- 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 过程已成功完成。
在上面的示例中,我们使用了 % 和 _ 两个通配符来匹配字符类型数据中的内容。当条件成立时,输出相应的信息。
- 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 运算符来检查一个年龄值是否在指定的范围内。当条件成立时,输出相应的信息。
- 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 运算符来检查一个年龄值是否在指定的列表内。当条件成立时,输出相应的信息。
LIKE、BETWEEN 和 IN 运算符是 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:比较运算符
系列文章目录 Oracle PL/SQL基础语法学习12:短路求值 Oracle PL/SQL基础语法学习13:比较运算符 Oracle PL/SQL基础语法学习14:BOOLEAN表达式 文章目录 系列文章目录Oracle PL/SQL基础语法学习13:比较运算符比较运算符介绍官方文档…...
金仓数据库适配记录
金仓数据库适配记录 人大金仓数据库管理系统KingbaseES(简称:金仓数据库或KingbaseES)是北京人大金仓信息技术股份有限公司自主研制开发的具有自主知识产权的通用关系型数据库管理系统。 金仓数据库主要面向事务处理类应用,兼顾各类数据分析类应用,可用做管理信息系统、…...
ElasticSearch 学习 ==ELK== 进阶
二、ElasticSearch 学习 ELK 进阶 (1)文档局部更新 我们也说过文档是不可变的——它们不能被更改,只能被替换。 update API必须遵循相同的规则。表面看来,我们似乎是局部更新了文档的位置,内部却是像我们之前说的一样…...
【数据结构 -- C语言】 双向带头循环链表的实现
目录 1、双向带头循环链表的介绍 2、双向带头循环链表的接口 3、接口实现 3.1 开辟结点 3.2 创建返回链表的头结点 3.3 判断链表是否为空 3.4 打印 3.5 双向链表查找 3.6 双向链表在pos的前面进行插入 3.6.1 头插 3.6.2 尾插 3.6.3 更新头插、尾插写法 3.7 双向链…...
自然语言处理与其Mix-up数据增强方法报告
自然语言处理与其Mix-up数据增强方法 1绪论1.课题背景与意义1.2国内外研究现状 2 自然语言经典知识简介2.1 贝叶斯算法2.2 最大熵模型2.3神经网络模型 3 Data Augmentation for Neural Machine Translation with Mix-up3.1 数据增强3.2 对于神经机器翻译的软上下文的数据增强3.…...
Vue(组件化编程:非单文件组件、单文件组件)
一、组件化编程 1. 对比传统编写与组件化编程(下面两个解释图对比可以直观了解) 传统组件编写:不同的HTML引入不同的样式和行为文件 组件方式编写:组件单独,复用率高(前提组件拆分十分细致) 理…...
【MATLAB数据处理实用案例详解(22)】——基于BP神经网络的PID参数整定
目录 一、问题描述二、算法仿真2.1 BP_PID参数整定初始化2.2 优化PID2.3 绘制图像 三、运行结果四、完整程序 一、问题描述 基于BP神经网络的PID控制的系统结构如下图所示: 考虑仿真对象,输入为r(k)1.0,输入层为4,隐藏层为5&…...
第11章 项目人力资源管理
文章目录 项目人力资源管理 过程11.2.1 编制项目人力资源计划的工具与技术(1)层次结构图(工作、组织、资源 分解结构)(2)矩阵图(责任分配矩阵,RAM)(3…...
07-Vue技术栈之(组件之间的通信方式)
目录 1、组件的自定义事件1.1 绑定自定义事件:1.1.1 第一种方式1.1.2 第二种方式1.1.3 自定义事件只触发一次 1.2 解绑自定义事件1.3绑定原生DOM事件1.4 总结 2、全局事件总线(GlobalEventBus)2.1 应用全局事件总线 3、 消息订阅与发布&#…...
度量学习Metirc Learning和基于负例的对比学习Contrastive Learning的异同点思考
参考:对比学习(Contrastive Learning):研究进展精要 - 知乎 参考:对比学习论文综述【论文精读】_哔哩哔哩_bilibili 参考:度量学习DML之Contrastive Loss及其变种_对比损失的变种_胖胖大海的博客-CSDN博客 参考&…...
3.编写油猴脚本之-helloword
3.编写油猴脚本之-helloword Start 通过上一篇文章的学习,我们安装完毕了油猴插件。今天我们来编写一个helloword的脚步,体验一下油猴。 1. 开始 点击油猴插件>添加新脚本 默认生成的脚本 // UserScript // name New Userscript // name…...
openwrt的openclash提示【更新失败,请确认设备闪存空间足够后再试】
网上搜索了一下,问题应该是出在“无法从网络下载内核更新包”或者“无法识别内核的版本号” 解决办法:手动下载(我是只搞了DEV内核就搞定了TUN和Meta没有动) --> 上传到路由器上 --> 解压缩 --> 回到openclash界面更新配…...
torch.nn.Module
它是所有的神经网络的根父类! 你的神经网络必然要继承 可以看一下这篇文章...
论文解析-基于 Unity3D 游戏人工智能的研究与应用
1.重写 AgentAction 方法 1.1 重写 AgentAction 方法 这段代码是一个重写了 AgentAction 方法的方法。以下是对每行代码解释: ①public override void AgentAction(float[] vectorAction) 这行代码声明了一个公共的、重写了父类的 AgentAction 方法的方法。它接受…...
6、Flutterr聊天界面网络请求
一、准备网络数据 1.1 数据准备工作 来到网络数据制造的网址,注册登录后,新建仓库,名为WeChat_flutter;点击进入该仓库,删掉左侧的示例接口,新建接口. 3. 接着点击右上角‘编辑’按钮,新建响应内容,类型为Array,一次生成50条 4. 点击chat_list左侧添加按钮,新建chat_list中的…...
Java 8 腰斩!Java 17 暴涨 430%!!(文末福利)
New Relic 最新发布了一份 “2023 年 Java 生态系统状况报告”,旨在提供有关当今 Java 生态系统状态的背景和见解。该报告基于从数百万个提供性能数据的应用程序中收集的数据,对生产中使用最多的版本、最受欢迎的 JDK 供应商、容器的兴起等多方面进行了调…...
如何手写一个支持H.265的高清播放器
概述 音视频编解码技术在当前的互联网行业中十分热门,特别是高清视频播放器的开发,其中包括4K、8K等超高清分辨率的播放器,具有极高的市场需求和广泛的应用场景。H265编码技术更是实现高清视频压缩的重要手段之一。如果想要掌握音视频编解码…...
Day 1 认识软件测试——(软件测试定义、目的、原则)
Day 1 认识软件测试——(软件测试定义、目的、原则) 文章目录 Day 1 认识软件测试——(软件测试定义、目的、原则)软件测试的定义软件测试的目的软件测试的经济学问题黑盒测试白盒测试软件测试原则小结所谓软件测试,就是一个过程或一系列过程,用来确定计算机代码完成了其…...
Docker Harbor
目录 一、Docker Harbor概述 1、Harbor的优势 2、Harbor知识点 3、Docker私有仓库架构 二、Harbor构建Docker私有仓库 1、环境配置 2、案例需求 3、部署docker-compose服务 4、部署harbor服务 5、启动harbor ① 访问 ② 添加项目并填写项目名称 ③ 通过127.0.0.1来…...
第三十四章 Unity人形动画(上)
在我们DirectX课程中,我们讲过一个模型最少拥有网格和材质,可以没有动画。游戏场景中的静态物体就可以是这样的模型,例如花草树木,建筑物等等,他们通过MeshRenderer就可以渲染。对于一个带有动画的FBX文件,…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...
