精选专栏链接 🔗


  • MySQL技术笔记专栏
  • Redis技术笔记专栏
  • 大模型搭建专栏
  • Python学习笔记专栏
  • 深度学习算法专栏

欢迎订阅,点赞+关注,每日精进1%,共攀技术高峰

更多内容持续更新中!希望能给大家带来帮助~ 😀😀😀


MySQL中的算术运算符和比较运算符

  • 1,MySQL中的DUAL关键字
  • 2,算术运算符
  • 3,比较运算符
    • 3.1,符号型运算符
      • 3.1.1,等号运算符
      • 3.1.2,安全等于运算符
      • 3.1.3,不等于运算符
      • 3.1.4,其他符号型运算符总结
    • 3.2,非符号型运算符
      • 3.2.1,IS NULL :为空运算符
      • 3.2.1,IS NOT NULL: 不为空运算符
      • 3.2.3,LEAST:最小值运算符
      • 3.2.4,GREATEST:最大值运算符
      • 3.2.5,BETWEEN AND运算符
      • 3.2.6,IN 和NOT IN运算符
      • 3.2.7,LIKE:模糊查询运算符
      • 3.2.8,ESCAPE 运算符
  • 4,逻辑运算符


1,MySQL中的DUAL关键字

‌ DUAL 关键字‌是 MySQL数据库 中的一个特殊表,主要用于在不需要从具体表中获取数据时进行查询操作。DUAL表是一个虚拟表,以运行如下SQL代码为例:

SELECT 1,3*2
FROM DUAL;

代码运行结果如下:

在这里插入图片描述


2,算术运算符

算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行运算。

MySQL中常见的算术运算符有:加(+)、减(-)、乘(*)、除(/或DIV)和取模(%或MOD)。接下来以SQL代码为例理解算术运算符:

①加法与减法运算符

SELECT 100, 100 + 0, 100 - 0, 100 + 50, 100 + 50 -30, 100 + 35.5, 100 - 35.5 
FROM DUAL;

运行结果如下:

在这里插入图片描述

②乘法与除法运算符

 SELECT 100, 100 * 1, 100 * 1.0, 100 / 1.0, 100 / 2,100 + 2 * 5 / 2,100 /3, 100 DIV 0 
FROM DUAL;

运行结果如下:

在这里插入图片描述
注意点:

  • 有浮点数参与运算,则结果为浮点数;如(100 * 1.0结果为100.0);
  • 整数相除结果为浮点数。 因为大多数情况下的整数相除结果不能除尽,因此MySQL中默认了是除不尽的情况,即使除尽了也是浮点数;
  • 分母为0则结果为Null;

③取模(求余)运算符

 SELECT 12 % 3, 12 MOD 5, 12 MOD -5, -12 % 5,-12 % -5FROM dual;

运行结果如下:

在这里插入图片描述

注意:取余运算结果的正负与被模数一致(即%前面的数值)

练习:从员工表中查询员工id为偶数的员工信息

SQL代码如下:

 SELECT employee_id,last_name,salaryFROM employeesWHERE employee_id % 2 = 0;

查询得到的结果集如下:

在这里插入图片描述


3,比较运算符

比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果为假则返回0,其他情况则返回NULL。比较运算符可以分为符号类型和非符号类型。


3.1,符号型运算符

3.1.1,等号运算符

运行如下SQL代码:

SELECT 1 = 2,1 != 2,1 = '1',1 = 'a',0 = 'a' 
FROM DUAL;

运行结果如下:

在这里插入图片描述
运行如下SQL代码:

SELECT 'a' = 'a','ab' = 'ab','a' = 'b' 
FROM DUAL;

运行结果如下:

在这里插入图片描述

注意点:

  • 如果等号两边的值一个是整数,一个是字符串,则MySQL会按照字符串进行比较。如:1 = ‘1’ 进行比较时,会将字符串转换为数值1 ;
  • 字符串存在隐式转换。如果转换数值不成功,则看做0;比如1=‘a’ ,字符串转数值失败,会变为0;
  • 如果等号两边都是字符串,MySQL会按照字符串进行比较,比较各自字符的ASCII编码;
  • 如果等号两边的值、字符串或表达式中有一个为NULL,则比较结果为NULL。

易错例子:筛选出employees表内commission_pct为Null的员工信息

SQL语句如果写成:

SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pct = NULL;

此时执行查询,没有任何结果,如下图所示:

在这里插入图片描述
原因就是WHERE语句中有Null参与比较,而只要等号两边有一个Null,结果就是Null。可以使用接下来介绍的安全等于运算符解决此问题。


3.1.2,安全等于运算符

安全等于运算符**(<=>)与等于运算符(=)的作用是相似的,唯一的区别是‘<=>’可以用来对NULL进行判断。在两个操作数均为NULL时,其返回值为1,而不为NULL;当一个操作数为NULL时,其返回值为0,而不为NULL。

SQL代码示例如下:

SELECT 1 <=> '1', 1 <=> 0, 'a' <=> 'a', (5 + 3) <=> (2 + 6), '' <=> NULL,NULL <=> NULL 
FROM DUAL;

运行结果如下:

在这里插入图片描述

回顾例子:筛选出employees表内commission_pct为Null的员工信息

对此例子,可以使用安全等于(<=>)进行查询:

SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pct <=> NULL;  

运行结果如下:
在这里插入图片描述


3.1.3,不等于运算符

不等于运算符( <> 和 != )用于判断两边的数字、字符串或者表达式的值是否不相等,如果不相等则返回1,相等则返回0。不等于运算符不能判断NULL值。如果两边的值有任意一个为NULL,或两边都为NULL,则结果为NULL。

SQL示例如下:

 SELECT 1 <> 1, 1 != 2, 'a' != 'b', (3+4) <> (2+6), 'a' != NULL, NULL <> NULLFROM DUAL; 

运行结果如下:

在这里插入图片描述

3.1.4,其他符号型运算符总结

运算符名称作用示例
<小于运算符判断前面的值、字符串或表达式是否小于后面的值、字符串或表达式SELECT C FROM TABLE WHERE A < B
>大于运算符判断前面的值、字符串或表达式是否大于后面的值、字符串或表达式SELECT C FROM TABLE WHERE A > B
<=小于等于运算符判断前面的值、字符串或表达式是否小于等于后面的值、字符串或表达式SELECT C FROM TABLE WHERE A <= B
>=大于等于运算符判断前面的值、字符串或表达式是否大于等于后面的值、字符串或表达式SELECT C FROM TABLE WHERE A >= B

3.2,非符号型运算符

3.2.1,IS NULL :为空运算符

回顾例子:筛选出employees表内commission_pct为Null的员工信息

前面介绍了使用安全等于运算符筛选 Null 字段。我们还可以使用IS NULL运算符进行筛选:

SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pct IS NULL;  

在这里插入图片描述


3.2.1,IS NOT NULL: 不为空运算符

继续看例子:筛选出employees表内commission_pct不为Null的员工信息

SQL语句如下:

SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pct IS NOT NULL;  

运行结果如下:

在这里插入图片描述

总结:查询commission_pct等于NULL。可以有以下四种写法:

SELECT employee_id,commission_pct FROM employees WHERE commission_pct IS NULL;
SELECT employee_id,commission_pct FROM employees WHERE commission_pct <=> NULL;
SELECT employee_id,commission_pct FROM employees WHERE ISNULL(commission_pct);
SELECT employee_id,commission_pct FROM employees WHERE commission_pct = NULL;

3.2.3,LEAST:最小值运算符

LEAST最小值运算符,用于在多个值中返回最小值。

SQL示例如下:

 SELECT LEAST (1,0,2), LEAST('b','a','c'), LEAST(1,NULL,2)FROM DUAL;

运行结果如下:
在这里插入图片描述
通过结果可以看出:

  • 当参数是整数或者浮点数时,LEAST将返回其中最小的值;
  • 当参数为字符串时,LEAST返回字母表中顺序最靠前的字符;
  • 当比较值列表中有NULL时,LEAST不能判断大小,返回值为NULL;

3.2.4,GREATEST:最大值运算符

GREATEST最大值运算符,用于在多个值中返回最小值。

SQL示例如下:

SELECT GREATEST(1,0,2), GREATEST('b','a','c'), GREATEST(1,NULL,2)
FROM DUAL;

运行结果如下:

在这里插入图片描述
通过结果可以看出:

  • 当参数中是整数或者浮点数时,GREATEST将返回其中最大的值;
  • 当参数为字符串时,GREATEST返回字母表中顺序最靠后的字符;
  • 当比较值列表中有NULL时,GREATEST不能判断大小,返回值为NULL;

3.2.5,BETWEEN AND运算符

BETWEEN AND运算符使用的格式通常为:SELECT D FROM TABLE WHERE C BETWEEN A AND B,此时,当C大于或等于A,并且C小于或等于B时,结果为1,否则结果为0。

SQL示例如下:

SELECT 1 BETWEEN 0 AND 1, 10 BETWEEN 11 AND 12, 'b' BETWEEN 'a' AND 'c'
FROM DUAL;

运行结果如下:

在这里插入图片描述

应用示例:查询employees表内工资在6000到8000的员工信息;

SQL语句如下:

SELECT employee_id,last_name,salary
FROM employees
WHERE salary BETWEEN 6000 AND 8000;

查询得到的结果集如下:

在这里插入图片描述

需要注意的是:SELECT D FROM TABLE WHERE C BETWEEN A AND B;,其中A为下边界,C为上边界,不可颠倒,否则可能查询不到数据。

如果需求改变,要求查询employees表内工资不在6000到8000的员工信息呢?

SQL语句如下:

SELECT employee_id,last_name,salary
FROM employees
WHERE salary NOT BETWEEN 6000 AND 8000;

查询得到的结果集如下:

在这里插入图片描述


3.2.6,IN 和NOT IN运算符

IN运算符用于**判断给定的值是否是IN列表中的一个值,如果是则返回1,否则返回0。

应用示例:查询部门为10、20、30部门的员工信息

SQL示例如下:

SELECT last_name,salary,department_id
FROM employees
WHERE department_id IN (10,20,30);

或者采用下面这种方案:

SELECT last_name,salary,department_id
FROM employees
where department_id = 10 or department_id = 20 or department_id = 30;

运行结果如下:

在这里插入图片描述


NOT IN运算符用于判断给定的值是否不是IN列表中的一个值,如果不是IN列表中的一
个值,则返回1,否则返回0。

应用示例:查询工资不是6000、7000、8000的员工信息

SQL示例如下:

SELECT last_name,salary,department_id
FROM employees
WHERE salary NOT IN (6000,7000,8000);

运行结果如下:

在这里插入图片描述


3.2.7,LIKE:模糊查询运算符

LIKE运算符主要用来匹配字符串,通常用于模糊匹配,如果满足条件则返回1,否则返回
0。如果给定的值或者匹配条件为NULL,则返回结果为NULL。

应用示例:查询last_name中包含字符 ‘a’ 的员工信息

SQL示例如下:

SELECT last_name
FROM employees
WHERE last_name LIKE '%a%';

运行结果如下:

在这里插入图片描述

其中 %a% 中的 “%”是通配符,它代表不确定个数的字符。另外“_” 也是常用的通配符,二者区别如下:

  • “%”:匹配0个或多个字符。
  • “_”:只能匹配一个字符。

以下面的几个案例进行说明:

  • “%a%” 表示查询 last_name 中包含字符a的员工信息;
  • “a%” 表示查询last_name中以字符a开头的员工信息;
  • “%a” 表示查询last_name中以字符a结尾的员工信息;
  • “_a%” 表示查询last_name中第二个字符为a的员工信息;(一个下划线匹配一个字符)
  • “_\_a%” 表示查询第二个字符为下划线,且第三个字符为a的 员工信息;(其中 “\” 表示转义)

3.2.8,ESCAPE 运算符

如果使用\表示转义,要省略ESCAPE。如果不想使用\表示转义,则要加上ESCAPE。

SQL示例(\表示转义):

SELECT last_name
FROM employees
WHERE last_name LIKE '_\_a%';

不想使用\进行转义,比如要求使用$进行转义。则可以修改SQL为:

SELECT last_name
FROM employees
WHERE last_name LIKE '_$_a%' ESCAPE '$';

4,逻辑运算符

逻辑运算符主要用来判断表达式的真假,在MySQL中,逻辑运算符的返回结果为1、0或者NULL。MySQL中支持的四种逻辑运算符分别是:逻辑与、逻辑或、逻辑非、逻辑异或。

运算符作用作用
NOT 或 !逻辑非SELECT NOT A
AND 或 &&逻辑与SELECT A AND B 或 SELECT && B
OR 或II逻辑或SELECT A OR B 或 SELECT A | | B
XOR逻辑异或SELECT A XOR B

其中逻辑异或(XOR)运算符是当给定的值中任意一个值为NULL时,则返回NULL;如果
两个非NULL的值都是0或者都不等于0时,则返回0;如果一个值为0,另一个值不为0时,则返回1。简而言之,异或强调 “异” ,只有两边不同时,才返回1。

异或运算符SQL示例

SELECT 1 XOR -1, 1 XOR 0, 0 XOR 0, 1 XOR NULL, 1 XOR 1 XOR 1, 0 XOR 0 XOR 0;

运行结果如下:

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/909882.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/909882.shtml
英文地址,请注明出处:http://en.pswp.cn/news/909882.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FFmpeg推流实战30秒速成

FFmpeg windows 7.1.1下载地址 FFmpeg 推流方法 FFmpeg 是一个强大的多媒体处理工具&#xff0c;支持将视频和音频推流到各种流媒体服务器&#xff08;如 RTMP、RTSP、HLS 等&#xff09;。以下是几种常见的推流方法。 推流到 RTMP 服务器 RTMP&#xff08;Real-Time Messa…

74HC595功能介绍及代码驱动

一、引脚描述 QA~QH(15,1~7脚):数据输出引脚 QH1(9脚):移位寄存器串行数据输出脚,当移位寄存器中的数据多余8位时,最先进入的那位被挤出去,一般级联使用,接下一个74HC595 G(13脚):输出使能引脚,低电平使能 RCK(12脚):存储寄存器输入数据使能引脚,上升沿时…

AntV G 入门教程

下面是 AntV G&#xff08;以下简称 G&#xff09;的中文入门与核心 API 教程&#xff0c;涵盖从画布创建、图形绘制到事件与动画等常用方法&#xff0c;每个 API 均附带完整示例代码。示例引用自官方“Getting Started”指南 ([g.antv.antgroup.com][1])。 一、安装与引入 #…

短视频矩阵什么意思?

短视频矩阵是指通过布局多个短视频账号&#xff0c;形成协同运营的账号体系&#xff0c;以实现流量聚合、品牌曝光或商业变现的策略。其核心逻辑是利用不同账号的定位、内容风格或受众群体&#xff0c;构建互补的流量网络&#xff0c;而非单一账号的独立运营。 核心特点与作用&…

Linux 日志查看和分析

Linux 日志是系统运行状态的重要记录&#xff0c;包含了系统启动、服务运行、用户操作、安全事件等关键信息&#xff0c;对于故障排查、安全审计和系统维护至关重要。 故障排查&#xff1a;定位系统崩溃、服务异常的根本原因&#xff08;如服务启动失败、硬件故障&#xff09;…

一篇文章快速学会HTML

一篇文章快速学会HTML 注&#xff1a;适合有一定编程基础的来快速掌握HTML 超文本标记语言 超文本&#xff1a;文本&#xff0c;声音&#xff0c;图片&#xff0c;视频&#xff0c;表格&#xff0c;链接 标记&#xff1a;许多的标签组成 HTML页面是运行到浏览器上的 HTML…

智能混合检索DeepSearch

智能混合检索 DeepSearch 是一款自主研发的大规模分布式搜索引擎&#xff0c;提供一站式智能搜索解决方案。系统内置多种行业专属的查询语义理解能力&#xff0c;融合语义 ORC 模型、文本向量模型、图像/视频向量模型、大语言模型&#xff08;LLM&#xff09;、分词器以及机器学…

【Docker基础】Docker镜像管理:docker tag详解

目录 1 Docker镜像标签基础概念 1.1 什么是Docker镜像标签 1.2 镜像标识的三要素 2 docker tag命令详解 2.1 命令基本语法 2.2 命令工作原理 2.3 常用操作示例 3 标签管理的实践示例 3.1 标签命名规范 3.2 多标签策略 3.3 latest标签的合理使用 4 标签与镜像仓库的…

AI时代个人IP的重塑与机遇 | 创客匠人

2025年作为AI应用爆发元年&#xff0c;正悄然改写个人IP的打造逻辑。AI不会取代IP&#xff0c;却会淘汰不懂得与AI共生的创作者。 AI重构IP运营的三大机遇 内容生产效率提升&#xff1a;传统模式下需2-3天打磨的深度文章&#xff0c;AI输入关键词后半小时即可完成初稿&#xf…

[5-03-01].第14节:集群搭建 - 在Linux系统中搭建

SpringCloud学习大纲 三、集群环境搭建&#xff1a; 3.1.集群规划 1.nacos规划&#xff1a; hadoop103hadoop104hadoop105192.168.148.3192.168.148.4192.168.148.5nacosnacosnacos 2.MYSQL规划 &#xff1a;192.168.148.3 3306 5.7.27

ESP32-CH3+MicroPython+INMP441 测试麦克风通过音量阈值控制小灯

测试功能描述&#xff1a; 程序会先测量 2 秒环境音量作为基准&#xff0c;然后开始实时显示音量柱状图&#xff0c;并在 30 秒后自动结束&#xff0c;当检测到音量超过阈值时会显示提示并打开led灯 一&#xff0c;硬件准备&#xff1a; 1.ESP32 CH3 USB开发板1块 2.INMP44…

io.net 携手 Walrus,为 AI 和机器学习应用提供去中心化存储与计算能力

作为最大规模的按需云计算提供商之一&#xff0c;io.net 部署并管理来自地理分布式节点的去中心化 GPU 集群&#xff0c;现正与基于 Sui 构建的去中心化数据存储协议 Walrus 深度整合。此次合作为去中心化 AI 和机器学习&#xff08;machine learning&#xff0c;ML&#xff09…

【上市公司文本分析】根据句号和分号进行文本分割,提取含有特定关键词的语句并导出为EXCEL

本文介绍了一种基于Python的中文文本分析方法&#xff0c;用于从年报文件中提取含有关键词的语句。方法使用jieba分词库进行中文分词&#xff0c;通过自定义词典提高分词准确性。程序首先读取并预处理文本&#xff08;统一标点符号、去除换行符&#xff09;&#xff0c;然后按句…

小白畅通Linux之旅-----DHCP服务项目实战

目录 一、项目拓扑 二、项目要求 三、项目准备 DHCP服务器 1、下载dhcp服务 2、准备 1.txt 文件 &#xff08;为内部客户机设置为固定获得ip&#xff09; 3、准备2.txt文件 &#xff08;为内部网络分配ip&#xff09; 4、准备 3.txt 文件&#xff08;为外部网络配置ip&…

eps转pdf-2025年6月18日星期三

1.打开cmd。 使用 cd 命令切换到包含 EPS 文件的目录。例如&#xff0c;如果 EPS 文件在 E:\eps_files 目录下&#xff0c;输入以下命令&#xff1a; cd E:\eps_files 2. 转换单个 EPS 文件&#xff1a; 输入以下命令将单个 EPS 文件转换为 PDF 文件 epstopdf input.eps …

处理器特性有哪些?

处理器特性有哪些&#xff1f; 处理器的特性可以从多个维度进行划分&#xff0c;包括架构设计、性能指标、功能支持等。以下是处理器的主要特性分类及详细说明&#xff1a; 1. 架构特性 指令集架构&#xff08;ISA&#xff09; CISC&#xff08;复杂指令集&#xff0c;如x86&…

Vue3+TypeScript 导入枚举(Enum)最佳实践

在 Vue 3 TypeScript 项目中&#xff0c;导入枚举时通常不需要使用 import type&#xff0c;但具体取决于使用场景。以下是详细说明&#xff1a; 1. 枚举的特殊性 枚举在 TypeScript 中既是类型&#xff08;Type&#xff09;也是值&#xff08;Value&#xff09;&#xff1a…

主成分分析(PCA)例题——给定协方差矩阵

向量 x x x的相关矩阵为 R x [ 0.3 0.1 0.1 0.1 0.3 − 0.1 0.1 − 0.1 0.3 ] {\bm R}_x \begin{bmatrix} 0.3 & 0.1 & 0.1 \\ 0.1 & 0.3 & -0.1 \\ 0.1 & -0.1 & 0.3 \end{bmatrix} Rx​ ​0.30.10.1​0.10.3−0.1​0.1−0.10.3​ ​ 计算输入向量…

RTSP播放器低延迟实践:一次对毫秒级响应的技术探索

✅ 为什么说“大牛直播SDK的RTSP播放器延迟表现行业领先”&#xff1a; 1. 毫秒级延迟&#xff08;100ms~250ms&#xff09; windows平台rtsp播放器延迟测试 在业内常见的 RTSP 播放器中&#xff0c;传统开源方案&#xff08;如 VLC、FFmpeg 播放器封装&#xff09;延迟普遍在…

【postgresql中timestamp为6是什么意思?】

postgresql中timestamp为6是什么意思&#xff1f; postgresql中timestamp为6是什么意思&#xff1f;示例注意事项 postgresql中timestamp为6是什么意思&#xff1f; 在 PostgreSQL 中&#xff0c;TIMESTAMP 类型用于存储日期和时间信息。当你提到 TIMESTAMP(6)&#xff0c;这里…