MySQL比较运算符详解

MySQL比较运算符详解

  • 一、常用的比较运算符
  • 二、比较运算符的使用方法
    • 2.1 等于运算符(=)
    • 2.2 不等于运算符(<>或!=)
    • 2.3 大于运算符(>)
    • 2.4 小于运算符(<)
    • 2.5 大于等于运算符(>=)
    • 2.6 小于等于运算符(<=)
    • 2.7 安全等于运算符(<=>)
  • 三、非符号类型的运算符
    • 3.1 空运算符(IS NULL或者ISNULL)
    • 3.2 非空运算符 (IS NOT NULL)
    • 3.3 最小值运算符 LEAST()
    • 3.4 最大值运算符 GREATEST()
    • 3.5 BETWEEN AND运算符
    • 3.6 IN运算符
    • 3.7 NOT IN运算符
    • 3.8 LIKE运算符
    • 3.9 REGEXP运算符
  • 四、注意事项


💖The Begin💖点点关注,收藏不迷路💖

一、常用的比较运算符

MySQL提供了一系列的比较运算符,用于比较两个表达式的值。比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果为假则返回0,其他情况则返回NULL。 下面是常用的比较运算符及其说明:

等于运算符(=):用于判断两个表达式的值是否相等。
不等于运算符(<>或!=):用于判断两个表达式的值是否不相等。
大于运算符(>):用于判断一个表达式的值是否大于另一个表达式的值。
小于运算符(<):用于判断一个表达式的值是否小于另一个表达式的值。
大于等于运算符(>=):用于判断一个表达式的值是否大于或等于另一个表达式的值。
小于等于运算符(<=):用于判断一个表达式的值是否小于或等于另一个表达式的值。
安全等于运算符(<=>): 用于对NULL进行判断,与等于运算符(=)作用相似。

在这里插入图片描述

二、比较运算符的使用方法

比较运算符可以用于各种查询条件和筛选操作,以及在WHERE子句中进行条件过滤。下面是一些使用比较运算符的示例:

2.1 等于运算符(=)

等于运算符用于判断判断等号两边的值、字符串或表达式是否相等,如果相等则返回1,不相等则返回0。

下面是一些使用等于运算符(=)的示例:

SELECT * FROM users WHERE age = 25;
SELECT 10 = 10;  -- 返回结果为1
SELECT 10 = 0;   -- 返回结果为0
SELECT NULL = NULL;   -- 返回结果为NULL
SELECT ''=> NULL;   -- 返回结果为NULL

在使用等号运算符时,遵循如下规则:

1、如果等号两边的值、字符串或表达式都为字符串,则MySQL会按照字符串进行比较,其比较的是每个字符串中字符的ANSI编码是否相等。
2、如果等号两边的值都是整数,则MySQL会按照整数来比较两个值的大小。
3、如果等号两边的值一个是整数,另一个是字符串,则MySQL会将字符串转化为数字进行比较。
4、如果等号两边的值、字符串或表达式中有一个为NULL,则比较结果为NULL。

2.2 不等于运算符(<>或!=)

不等于运算符用于用于判断两边的数字、字符串或者表达式的值是否不相等,如果不相等则返回1,相等则返回0。不等于运算符不能判断NULL值。

如果两边的值有任意一个为NULL,或两边都为NULL,则结果为NULL

SELECT 10 <> 10;  -- 返回结果为0
SELECT 10 != 20;  -- 返回结果为1
SELECT 'a' != 'b';  -- 返回结果为1
SELECT'a' != NULL; -- 返回结果为 NULL
SELECT NULL <> NULL;   -- 返回结果为NULL

2.3 大于运算符(>)

大于运算符用于判断一个表达式的值是否大于另一个表达式的值。

如果为真则返回1,否则返回0。

如果两边的值有任意一个为NULL,或两边都为NULL,则结果为NULL

SELECT 10 > 10;  -- 返回结果为0
SELECT 20 > 10;  -- 返回结果为1
SELECT 'a' > 'b';  -- 返回结果为0
SELECT 'a' < 'b';  -- 返回结果为1
SELECT'a' > NULL; -- 返回结果为 NULL
SELECT NULL > NULL;   -- 返回结果为NULL

2.4 小于运算符(<)

小于运算符用于判断一个表达式的值是否小于另一个表达式的值。
如果为真则返回1,否则返回0。

如果两边的值有任意一个为NULL,或两边都为NULL,则结果为NULL

SELECT 10 < 20;  -- 返回结果为1
SELECT 20 < 10;  -- 返回结果为0
SELECT 'a' < 'b';  -- 返回结果为1
SELECT'a' < NULL; -- 返回结果为 NULL
SELECT NULL < NULL;   -- 返回结果为NULL

2.5 大于等于运算符(>=)

大于等于运算符用于判断一个表达式的值是否大于或等于另一个表达式的值。
如果为真则返回1,否则返回0。

如果两边的值有任意一个为NULL,或两边都为NULL,则结果为NULL

SELECT 10 >= 20;  -- 返回结果为0
SELECT 20 >= 10;  -- 返回结果为1
SELECT 'a' >= 'b';  -- 返回结果为0
SELECT'a' >= NULL; -- 返回结果为 NULL
SELECT NULL >= NULL;   -- 返回结果为NULL

2.6 小于等于运算符(<=)

小于等于运算符用于判断一个表达式的值是否小于或等于另一个表达式的值。
如果为真则返回1,否则返回0。

如果两边的值有任意一个为NULL,或两边都为NULL,则结果为NULL


SELECT 10 <= 20;  -- 返回结果为1
SELECT 20 <= 10;  -- 返回结果为0
SELECT 'a' <= 'b';  -- 返回结果为1
SELECT'a' <= NULL; -- 返回结果为 NULL
SELECT NULL <= NULL;   -- 返回结果为NULL

2.7 安全等于运算符(<=>)

安全等于运算符(<=>)与等于运算符(=)作用相似,区别在于 <=> 可以对NULL进行判断。

安全等于运算符(<=>)通常用于在排序和比较操作中,特别是在处理NULL值时非常有用。它可以帮助我们准确地比较包含NULL值的表达式。

下面是一些使用安全等于运算符(<=>)的示例:

SELECT 10 <=> 10;  -- 返回结果为1
SELECT 5 <=> 10;   -- 返回结果为0
SELECT 10 <=> 5;    -- 返回结果为0
SELECT NULL <=> NULL;   -- 返回结果为1,L,其他返回结果与等于运算符相同。
SELECT 10 <=> NULL;   -- 返回结果为0,而不是NULL

需要注意的是,安全等于运算符(<=>)只能用于比较两个表达式的值,不能用于比较列和表达式之间的关系。如果需要比较列和表达式之间的关系,应使用其他比较运算符,如等于运算符(=)、大于运算符(>)等。

三、非符号类型的运算符

3.1 空运算符(IS NULL或者ISNULL)

用于判断一个值是否为NULL,如果为NULL则返回1,否则返回0。

示例如下:

SELECT NULL IS NULL;  -- 返回结果为1
SELECT ISNULL(NULL);  -- 返回结果为1
SELECT ISNULL('a');  -- 返回结果为0
SELECT 10 IS NULL;   -- 0

查询用户名为NULL的四种sql写法:

SELECT * FROM users WHERE username IS NULL;
SELECT * FROM users WHERE ISNULL(username);
SELECT * FROM users WHERE username <=> NULL;
SELECT * FROM users WHERE username = NULL;

3.2 非空运算符 (IS NOT NULL)

用于判断一个值是否不为NULL,如果不为NULL则返回1,否则返
回0。
示例如下:

SELECT NULL IS NOT NULL;  -- 返回结果为0
SELECT 10 IS NOT NULL;   --  返回结果为1

查询用户名为不为NULL的三种sql写法:

SELECT * FROM users WHERE username IS NOT NULL;
SELECT * FROM users WHERE NOT username <=> NULL;
SELECT * FROM users WHERE  NOT ISNULL(username );

3.3 最小值运算符 LEAST()

语法格式为:

LEAST(1,值2...,值n)

其中,“值n”表示参数列表中有n个值。在有两个或多个参数的情况下,返回最小值。

 SELECT LEAST (10,0,20); -- 返回结果为0

 SELECTLEAST('b','a','c'); -- 返回结果为a

 SELECT LEAST(10,NULL,20); -- 返回结果为NULL

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

3.4 最大值运算符 GREATEST()

语法格式为:

GREATEST(1,值2...,值n)

其中,n表示参数列表中有n个值。当有两个或多个参数时,返回值为最大值。假如任意一个自变量为NULL,则GREATEST()的返回值为NULL。

 SELECT GREATEST (10,0,20); -- 返回结果为20

 SELECT GREATEST('b','a','c'); -- 返回结果为c

 SELECT GREATEST(10,NULL,20);  -- 返回结果为NULL

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

3.5 BETWEEN AND运算符

BETWEEN AND运算符使用的格式通常为:

SELECT * FROM TABLE WHERE C BETWEEN A AND B

此时,当C大于或等于A,并且C小于或等于B时,结果为1,否则结果为0。

SELECT 1 BETWEEN 0 AND 1; -- 返回结果为1
SELECT 10 BETWEEN 11 AND 12; -- 返回结果为0
SELECT 'b' BETWEEN 'a' AND 'c'; -- 返回结果为1

3.6 IN运算符

IN运算符用于判断给定的值是否是IN列表中的一个值,如果是则返回1,否则返回0。如果给定的值为NULL,或者IN列表中存在NULL,则结果为NULL。

SELECT 'a' IN ('a','b','c');  -- 返回结果为1
SELECT 1 IN (2,3);  -- 返回结果为0
SELECT NULL IN ('a','b');   -- 返回结果为NULL
SELECT 'a' IN ('a', NULL);   -- 返回结果为1

3.7 NOT IN运算符

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

SELECT 'a' NOT IN ('a','b','c');  -- 返回结果为0
SELECT 1 NOT IN (2,3);  -- 返回结果为1

3.8 LIKE运算符

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

LIKE运算符通常使用如下通配符:

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

SELECT NULL LIKE 'abc';  -- 返回结果为NULL
SELECT 'abc' LIKE NULL; -- 返回结果为NULL

SELECT * FROM table WHERE username LIKE '%zyl%';  --匹配含有zyl三个字母的username 
SELECT * FROM table WHERE username LIKE '_yl%';  -- 匹配第2、3个字母为yl的username 

3.9 REGEXP运算符

REGEXP运算符用来匹配字符串,语法格式为: expr REGEXP 匹配条件 。如果expr满足匹配条件,返回1;如果不满足,则返回0。若expr或匹配条件任意一个为NULL,则结果为NULL。

REGEXP运算符在进行匹配时,常用的有下面几种通配符:

1)‘^’匹配以该字符后面的字符开头的字符串。
(2)‘$’匹配以该字符前面的字符结尾的字符串。
(3)‘.’匹配任何一个单字符。
(4)“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”或“b”或“c”。为了命名字符的范围,使用一
个‘-’。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。
(5)‘*’匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的‘x’字符,“[0-9]*”匹配任何数量的数字,
而“*”匹配任何数量的任何字符。

四、注意事项

在使用比较运算符时,需要注意以下几点:

1、字符串比较: 当比较字符串时,MySQL会根据ANSI字符串的字典顺序进行比较。例如,‘abc’大于’ab’,‘abc’小于’abd’。

SELECT * FROM table_name WHERE column_name > 'ab';
SELECT * FROM table_name WHERE column_name < 'abd';

2、NULL值比较: 与NULL进行比较的结果都将是NULL 。 如果需要处理NULL值的情况,可以使用IS NULL或IS NOT NULL来判断。

3、多个条件的组合: 可以使用逻辑运算符(AND、OR、NOT)来组合多个比较条件,以实现更复杂的查询条件。


💖The End💖点点关注,收藏不迷路💖

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/314724.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开源云真机平台-Sonic实际使用过程踩坑及解决方法(持续更新)

开源云真机平台-Sonic实际使用过程踩坑及解决方法(持续更新) 1、执行Python 自定义脚本时requests文件报错 Script stderrTraceback (most recent call last): File "D:TestToolssonic-agent-2.6 2-windows x86 64 onic-ent-v2.6.2-windows X86 64tes-utDut2b713b90-493-…

【MFC实践】基于MFC向导C++制作计算器(附文件)

一、写在前面1.1 什么是MFC向导&#xff1f;1.2 使用MFC向导制作计算器1.3安装visual studio 2022和MFC插件 二、设计计算器界面1.1 新创建MFC项目1.2 设计计算器界面1.3 添加相关变量1.4 算法的一些问题及解决方式1.5 计算功能的实现1.6 其它功能的实现1.6.1 DEL功能1.6.2 C置…

Linux——firewalld防火墙(二)

一、firewalld高级配置 1、IP地址伪装 地址伪装&#xff08;masquerade):通过地址伪装&#xff0c;NAT设备将经过设备的包转发到指定接收方&#xff0c;同时将通过的数据包的源地址更改为其自己的接口地址。当返回的数据包到达时&#xff0c;会将目的地址修改为原始主机的地址…

(26)Linux 进程通信之共享内存(共享储存空间)

共享内存是System V版本的最后一个进程间通信方式。共享内存&#xff0c;顾名思义就是允许两个不相关的进程访问同一个逻辑内存&#xff0c;共享内存是两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常为同一段物理内存。进程可以将同一…

6.4、SDN在云数据中心的应用案例分析

云数据中心中的虚拟子网包含网关和IP网段,IP分配给各个服务器,服务器间能够互相通信或通过网关访问外部网络。 在SDN云数据中心内,用户可以随时订购任意网段的虚拟子网,而且这些子网是可以在不同用户之间复用的,也就是说,不同用户可以使用相同的私有网段。 SDN云数据中心…

Matlab 字符识别OCR实验

Matlab 字符识别实验 图像来源于屏幕截图&#xff0c;要求黑底白字。数据来源是任意二进制文件&#xff0c;内容以16进制打印输出&#xff0c;0-9a-f’字符被16个可打印字符替代&#xff0c;这些替代字符经过挑选&#xff0c;使其相对容易被识别。 第一步进行线分割和字符分割…

从“唯分论”到“过程评价” 助力教育高质量发展

近日,为推动教育评价改革工作高质量发展,山东省委办公厅、省政府办公厅印发《关于进一步推进教育评价改革工作的若干措施》,从学校评价改革、学生评价改革等6方面共提出25条举措,对教育评价改革进行了全面部署。 教育评价改革是教育改革的“牛鼻子”,为教育发展提供了明确的方…

CSS 中的伪装大师:伪类和伪元素的奇妙世界

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

开源大数据集群部署(四)Freeipa部署(kerberos+ldap)

作者&#xff1a;櫰木 1、 FreeIPA介绍 Kerberos协议只是一种协议标准的框架&#xff0c;而MIT Kerberos则是实现了该协议的认证服务&#xff0c;是Kerberos的物理载体。将它与Hadoop服务进行集成便能够很好地解决安全性不足的问题。 除了需要安装MIT Kerberos之外&#xff0…

调查问卷设计指南:提升数据收集与分析效果的实用技巧

想要做好一份调查问卷要明确哪几点&#xff1f; 一、问卷三要素 1、问卷主题 我们使用调查问卷法进行调查的时候&#xff0c;首先要明确主题是什么&#xff0c;是关于人员满意度调查、人员喜好类型调查还是其他主题。明确主题后我们才可以进行接下来的动作。 2、调查人群 明确问…

互联网 HR 眼中的好简历是什么样子的?

HR浏览一份简历也就25秒左右&#xff0c;如果你连「好简历」都没有&#xff0c;怎么能找到好工作呢&#xff1f; 如果你不懂得如何在简历上展示自己&#xff0c;或者觉得怎么改简历都不出彩&#xff0c;那请你一定仔细读完。 互联网运营个人简历范文> 男 22 本科 AI简历…

数据类型、数据类型转换(Java)

一、数据类型的分类 1. byte&#xff1a;1字节&#xff0c;-128~127 2. short&#xff1a;2字节&#xff0c;-32768~32767 3. int&#xff1a;4字节 默认整型 4. long&#xff1a;8字节 注意&#xff1a;随便写一个整型字面量会默认是整型的&#xff0c;所以我们在写一个…

Docker 安装部署

1、Docker 安装 ① 卸载docker&#xff0c;清空之前的docker文件 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine \docker-ce…

挑选富集分析结果 enrichments

#2.2挑选term---selected_clusterenrichenrichmets[grepl(pattern "cilium|matrix|excular|BMP|inflamm|development|muscle|vaso|pulmonary|alveoli",x enrichmets$Description),]head(selected_clusterenrich) distinct(selected_clusterenrich)# remove duplica…

2. Presto应用

该笔记来源于网络&#xff0c;仅用于搜索学习&#xff0c;不保证所有内容正确。文章目录 1、Presto安装使用2、事件分析3、漏斗分析4、漏斗分析UDAF开发开发UDF插件开发UDAF插件 5、漏斗测试 1、Presto安装使用 参考官方文档&#xff1a;https://prestodb.io/docs/current/ P…

如何有效提高矢量网络分析仪的动态范围

动态范围是网络分析仪&#xff08;VNA&#xff09;接收机的最大输入功率与最小可测量功率&#xff08;本底噪声&#xff09;之间的差值&#xff0c;如图所示&#xff0c;要使测量有效&#xff0c;输入信号必须在这些边界内。 如果需要测量信号幅度非常大的变化&#xff0c;例如…

构建基于RHEL8系列(CentOS8,AlmaLinux8,RockyLinux8等)的Nginx1.24.0的RPM包

本文适用&#xff1a;rhel8系列&#xff0c;或同类系统(CentOS8,AlmaLinux8,RockyLinux8等) 文档形成时期&#xff1a;2022-2023年 因系统版本不同&#xff0c;构建部署应略有差异&#xff0c;但本文未做细分&#xff0c;对稍有经验者应不存在明显障碍。 因软件世界之复杂和个人…

SpringBoot 引入分页插件 PageHelper

官网 https://pagehelper.github.io/docs/howtouse/ 引入步骤 第1步&#xff1a;引入依赖 <!--分页插件--> <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.3.2</ver…

GBASE南大通用数据库如何检索单行

SELECT 语句返回的行集是它的活动集。单个 SELECT 语句返回单个行。您可使用嵌入式 SELECT 语句来从数据库将单个行检索到主变量内。然而&#xff0c;当 SELECT 语句返回多行数 据时&#xff0c;程序必须使用游标来一次检索一行。在 检索多行 中讨论“多行”选择操作。 要检索单…

STL——stack容器和queue容器详解

目录 &#x1f4a1;stack &#x1f4a1;基本概念 常用接口 &#x1f4a1;queue &#x1f4a1;基本概念 &#x1f4a1;常用接口 &#x1f4a1;stack &#x1f4a1;基本概念 栈&#xff08;stack&#xff09;&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端…