MySQL数据库操作DQL正则表达式
作者:王小王_123 时间:2024-01-14 13:04:48
前言:
正则表达式(regular expression)描述了一种字符串匹配的规则,正则表达式本身就是一个字符串,使用这个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串。在开发中,正则表达式通常被用来检索、替换那些符合某个规则的文本。
MySQL通过REGEXP关键字支持正则表达式进行字符串匹配。
-- ^ 在字符串开始处进行匹配
SELECT 'abc' REGEXP '^a'; -- 1
-- $ 在字符串末尾开始匹配
SELECT 'abc' REGEXP 'a$'; -- 0
SELECT 'abc' REGEXP 'c$'; -- 1
-- . 匹配任意字符
SELECT 'abc' REGEXP '.b'; -- 1
SELECT 'abc' REGEXP '.c'; -- 1
SELECT 'abc' REGEXP 'a.'; -- 1
-- [...] 匹配括号内的任意单个字符
SELECT 'abc' REGEXP '[xyz]'; -- 0
SELECT 'abc' REGEXP '[xaz]'; -- 1
返回值为1就代表匹配到了,如果返回值为0就代表不能匹配
-- [^...] 注意^符合只有在[]内才是取反的意思,在别的地方都是表示开始处匹配
SELECT 'a' REGEXP '[^abc]';-- 0
SELECT 'x' REGEXP '[^abc]';-- 1
SELECT 'abc' REGEXP '[^a]';-- 1
使用[^]则代表的是,不能匹配到,那么有些人肯定会疑问,为什么最后一个却匹配到了,虽然里面包含a,但是[^a]代表的是,除了a,里面还有其他的,也可以匹配成功,这里其实涉及到了一个单词中的全匹配和局部匹配。
负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'
-- a* 匹配0个或多个a,包括空字符串。 可以作为占位符使用.有没有指定字符都可以匹配到数据
SELECT 'stab' REGEXP '.ta*b';
SELECT 'stb' REGEXP '.ta*b';
SELECT '' REGEXP 'a*';
注意这里的*是0个或者多个,所以最后一个返回的是1
-- a+ 匹配1个或者多个a,但是不包括空字符
SELECT 'stab' REGEXP '.ta+b';
SELECT 'stb' REGEXP '.ta+b';
注意这里的+是1个或者多个
-- a? 匹配0个或者1个a
SELECT 'stb' REGEXP '.ta?b';
SELECT 'stab' REGEXP '.ta?b';
SELECT 'staab' REGEXP '.ta?b';
-- a1|a2 匹配a1或者a2,
SELECT 'a' REGEXP 'a|b';
SELECT 'b' REGEXP 'a|b';
SELECT 'b' REGEXP '^(a|b)';
SELECT 'a' REGEXP '^(a|b)';
SELECT 'c' REGEXP '^(a|b)';
-- a{m} 匹配m个a
SELECT 'auuuuc' REGEXP 'au{4}c';
SELECT 'auuuuc' REGEXP 'au{3}c';
注意这里的?是0个或者1个,标准的名字叫做非贪婪模式
-- a{m,n} 匹配m到n个a,包含m和n
SELECT 'auuuuc' REGEXP 'au{3,5}c';
SELECT 'auuuuc' REGEXP 'au{4,5}c';
SELECT 'auuuuc' REGEXP 'au{5,10}c';
-- (abc) abc作为一个序列匹配,不用括号括起来都是用单个字符去匹配,如果要把多个字符作为一个整体去匹配就需要用到括号,所以括号适合上面的所有情况。
SELECT 'xababy' REGEXP 'x(abab)y';
SELECT 'xababy' REGEXP 'x(ab)*y';
SELECT 'xababy' REGEXP 'x(ab){1,2}y';
一般的实际应用场景,通过正则表达式可以对文本进行匹配,这比之前的like关键字要智能的多,应用场景也是比较的广,所以需要熟悉它的语法标准:
select 字段 regexp '正则表达式' as 命名 from 表 ……
来源:https://blog.51cto.com/u_15172991/5428115
标签:MySQL,数据库,操作,DQL,正则,表达式
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
window.location的重写及判断location是否被重写
2024-04-28 10:18:17
node.js操作mysql(增删改查)
2024-01-26 00:02:50
Python的os包与os.path模块的用法详情
2023-06-04 05:52:48
python 最简单的实现适配器设计模式的示例
2021-10-14 12:07:59
![](https://img.aspxhome.com/file/2023/9/127609_0s.png)
Jupyter Notebook读取csv文件出现的问题及解决
2023-08-09 23:11:50
![](https://img.aspxhome.com/file/2023/9/64649_0s.jpg)
mysql复制表的几种常用方式总结
2024-01-25 12:11:59
![](https://img.aspxhome.com/file/2023/9/107429_0s.png)
Python3中的2to3转换工具使用示例
2022-04-26 17:33:36
谈谈网页设计中的字体应用 (4) 实战应用篇·下
2009-11-24 13:13:00
![](https://img.aspxhome.com/file/UploadPic/200911/24/202939796-23s.gif)
Python 正则表达式 re.match/re.search/re.sub的使用解析
2021-04-28 08:28:21
全面解析Python的While循环语句的使用方法
2023-12-21 04:41:11
![](https://img.aspxhome.com/file/2023/9/96979_0s.jpg)
asp检测服务器XmlHttp组件支持情况
2008-03-03 12:30:00
Golang初始化MySQL数据库方法浅析
2024-01-16 23:49:20
使用Python脚本和ADB命令实现卸载App
2023-04-11 03:59:39
![](https://img.aspxhome.com/file/2023/4/90374_0s.gif)
Python还能这么玩之用Python修改了班花的开机密码
2023-11-23 17:38:40
![](https://img.aspxhome.com/file/2023/8/93808_0s.png)
MySQL开启慢查询日志功能的方法
2024-01-19 10:09:37
vue使用Google Recaptcha验证的实现示例
2024-05-13 09:08:25
![](https://img.aspxhome.com/file/2023/7/126647_0s.jpg)
Python基于execjs运行js过程解析
2021-08-10 22:56:47
![](https://img.aspxhome.com/file/2023/8/80568_0s.jpg)
Python如何生成随机数及random随机数模块应用
2022-07-28 22:24:21
Asp包含文件include动态包含方法(含变量)
2010-01-14 20:12:00
图片自动更新(说明)
2024-04-28 09:46:51