SQL中LIKE和REGEXP简单对比

2023-09-21 23:32:48

一、在SQL中,LIKE和REGEXP是用于模式匹配的两种不同语法。它们用于在数据库查询中匹配符合特定模式的字符串。

1.LIKE 是SQL中用于模糊匹配的运算符,它使用通配符 % 来表示任意个数字符序列(包括空字符序列)的位置。

例如:

SELECT * FROM table_name WHERE column_name LIKE 'AA%';

上面的查询将返回以字母 "AA" 开头的所有字符串。

结果列:*

查询的表名:table_name

查询的列名:column_name

查询条件:LIKE 'AA%'

 

LIKE 的另一个常用通配符是 _,表示一个任意字符。例如:

SELECT * FROM table_name WHERE column_name LIKE '_AA';

上面的查询将返回1个任意字符和AA的字符串。

结果列:*

查询的表名:table_name

查询的列名:column_name

查询条件:LIKE '_AA'

 

2.REGEXP 是一种正则表达式运算符,用于进行更复杂的模式匹配。它使用正则表达式语法来描述匹配模式的规则。

例如:

SELECT * FROM table_name WHERE column_name REGEXP '^[a-z]+$';

上面的查询将返回只包含小写字母的字符串。

结果列:*

查询的表名:table_name

查询的列名:column_name

查询条件:REGEXP '^[a-z]+$'

注意:开启区分大小写可能会影响到查询的性能和结果。

 

3.查询字段中任意位置含有指定字符(如"AA")的值

a.like %

SELECT * FROM table_name WHERE column_name LIKE '%AA%';

b.REGEXP

SELECT * FROM table_name WHERE column_name REGEXP 'AA';

like匹配整个字段; REGEXP在字段内进行匹配,若加上^和$,就成了匹配整个字段了,若REGEXP 'AA'改为REGEXP '^AA$',则仅返回只有“AA”的字符串

 

使用 REGEXP 可以实现更灵活、更复杂的模式匹配,例如使用元字符、字符类、分组、量词等。这些是 LIKE 无法实现的功能。

需要注意的是,不同的数据库管理系统对 LIKE 和 REGEXP 的支持可能有所不同。在一些数据库中,可能需要使用特定的函数或扩展来实现 REGEXP 的功能。因此,具体的语法和用法请参考所使用的数据库的文档。

 

 

二、在MySQL中,LIKE和REGEXP是两个用于模式匹配的运算符,但是它们在功能和使用上有一些区别。

1.语法差异:

  • LIKE使用简单的通配符语法,其中 % 表示任意个数字符序列(包括空字符序列),_ 表示一个任意字符。
  • REGEXP使用正则表达式语法,它更加灵活和强大,可以表达更复杂的模式匹配规则。

2.性能差异:

  • 在一般情况下,LIKE模式的匹配性能相对较高,因为它在MySQL中使用了索引优化,可以利用索引进行高效搜索。
  • REGEXP模式的匹配性能相对较低,因为它需要进行正则表达式计算,需要更多的计算资源和时间,相对于简单的字符串匹配来说计算成本更高。

3.适用场景:

  • LIKE通常用于简单的字符串模糊匹配,例如匹配以某个字符开头的字符串或包含特定模式的字符串。
  • REGEXP适用于更复杂的模式匹配,例如匹配特定的字符类、重复模式或正则表达式中的其他复杂规则。

总之,在MySQL中,LIKE和REGEXP都可以用于模式匹配,但是它们的语法、性能和应用场景有所不同。通常来说,在简单的字符串模糊匹配场景下,使用LIKE更加高效;而在需要更复杂的模式匹配时,使用REGEXP更加灵活。

具体选择哪种方式取决于具体的使用场景和需求。

更多推荐

SQL 注入攻击的原理是什么

什么是SQL注入攻击,SQL注入攻击的原理是什么SQL注入攻击是一种常见的网络安全漏洞,攻击者可以通过注入恶意SQL语句来攻击Web应用程序。本篇文章将介绍SQL注入攻击的原理和如何防范SQL注入攻击,并提供一些代码示例。什么是SQL注入攻击SQL注入攻击是一种利用Web应用程序中的SQL语句输入漏洞的攻击方式。攻击者

10.12广州见 | 第十六届智慧城市大会报名通道全面开启

第十六届中国智慧城市大会将于10月12日至13日在广州举办智慧城市是数字中国、智慧社会的核心载体,是数字时代城市发展的高级形态。由中国服务贸易协会、中国测绘学会、中国遥感委员会主办的第十六届中国智慧城市大会,将以“数实融合·开放创新·智引未来”为主题,拟邀请行业主管单位和智慧城市规划建设管理单位领导、两院院士、业内知名

标准C++中string类函数总结

标准c++中string类函数介绍注意不是CString之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用=进行赋值操作,==进行比较,+做串

EFK代替ELK方案7.17.3

文章目录一.传统的ELK二.EFK2.1安装elasticsearch2.2服务端安装fileBeats2.2.1.安装`该也没有必要安装docker`,直接下载yum或官网jar包启动即可.2.2.2.编辑配置文件filebeat-java-logback.yml2.2.3.es配置`common_log_pipel

Linux文件编程(open read write close函数)

文章目录前言一、open函数二、read函数三、write函数四、openreadwrite函数本质五、close函数总结前言本篇文章我们来讲解Linux中的文件编程,这篇文章会先介绍openreadwrite函数。一、open函数open函数是一个在POSIX标准中定义的函数,用于打开文件或者创建新文件。它是文件操作

Java入门级简单定时任务TimerTask

如果要执行一些简单的定时器任务,无须做复杂的控制,也无须保存状态,那么可以考虑使用JDK入门级的定期器Timer来执行重复任务。一、原理JDK中,定时器任务的执行需要两个基本的类:java.util.Timer;java.util.TimerTask;要运行一个定时任务,最基本的步骤如下:1、建立一个要执行的任务Tim

《软件方法》第1章2023版连载(03)建模工作流

DDD领域驱动设计批评文集做强化自测题获得“软件方法建模师”称号《软件方法》各章合集1.2建模工作流1.2.1建模工作流ABCD如何能做好需求和设计,达到“低成本制造好卖的系统”的目标?并非喊喊口号就可以,需要静下心来学习和实践一些必要的建模技能。软件开发是增量、迭代进行的,每一个迭代周期都需要依次思考这么几个事情:A

四川玖璨电子商务有限公司培训可靠吗?

四川玖璨电子商务有限公司是一家在抖音平台上进行培训的电商公司。如今,随着抖音带货的火热,越来越多的人加入到这个行业中。然而,对于消费者来说,选择一个可靠的抖音培训公司并不容易。在这个领域中,四川玖璨电子商务有限公司是一个备受瞩目的公司。公司致力于为消费者提供高品质的商品和良好的服务。他们在抖音上拥有大量的粉丝,并且他们

【数据结构】图的应用:最小生成树;最短路径;有向无环图描述表达式;拓扑排序;逆拓扑排序;关键路径

目录1、最小生成树1.1概念1.2普利姆算法(Prim)1.3克鲁斯卡尔算法(Kruskal)2、最短路径2.1迪杰斯特拉算法(Dijkstra)2.2弗洛伊德算法(Floyd)2.3BFS算法,Dijkstra算法,Floyd算法的对比3、有向无环图描述表达式3.1有向无环图定义及特点3.2描述表达式4、拓扑排序4.

【Opencv入门到项目实战】(四):图像梯度计算|Sobel算子|Scharr算子|Laplacian算子

文章目录0.引言1.Sobel算子2.Scharr算子3.Laplacian算子0.引言在图像处理中,梯度是指图像中像素灰度变化的速率或幅度,我们先来看下面这张图假设我们想要计算出A点的梯度,我们可以发现A点位于边缘点,A点左边为黑色,右边为白色,而计算图像的梯度可以提取出图像中的边缘信息,我们常用的方法是使用Sobe

ESP8266 WiFi物联网智能插座—硬件功能

目录1、控制器板2、采集器板2.1、电源设计2.2、控制器设计2.3、电量采集电路设计2.4、按键和LED指示灯设计ESP8266WiFi物联网智能插座的硬件功能主要包括两部分:控制器板和采集器板。焊接成品效果如下图所示:1、控制器板控制器板是ESP8266最小系统,PCB设计效果如下图所示:控制器选用ESP-12S作

热文推荐