Mysql中正则表达式Regexp常见用法及说明
2022-12-12 11:08:44 来源:易采站长站 作者:
目录Mysql中Regexp常见用法Regexp关键字及正则表达式的常用通配符总结Mysql中Regexp常见用法模糊匹配,包含特定字符串#查找content字段中包含“车友俱乐部”的记录selec...
目录
mysql中Regexp常见用法Regexp关键字及正则表达式的常用通配符
总结
Mysql中Regexp常见用法
模糊匹配,包含特定字符串
# 查找content字段中包含“车友俱乐部”的记录 select * from club_content where content regexp '车友俱乐部' # 此时的regexp与like的以下用法是等同的 select * from club_content where content like '%车友俱乐部%'
模糊匹配,以特定字符串开头
# 查找content字段中以“车友”开头的记录 select * from club_content where content regexp '^车友' # 此时的regexp与like的以下用法是等同的 select * from club_content where content like '车友%'
模糊匹配,以特定字符串结尾
# 查找content字段中以“车友”结尾的记录 select * from club_content where content regexp '车友$' # 此时的regexp与like的以下用法是等同的 select * from club_content where content like '%车友'
模糊匹配,或关系
# 查找content字段中包含“心得”、“分享”或“技术贴” select * from club_content where content REGEXP '心得|分享|技术贴'
模糊匹配,不包含单个字符
# 查找content字段中不包含“车”字、“友”字的记录 select * from club_content where content REGEXP [^车友]
这个结果跑出来一看大吃一惊,竟然把所有记录给跑出来,这是为什么呢?
因为一旦加了这个方括号"[]",它就把里面的内容拆成单个的字符再匹配,它会逐个字符去匹配判断是不是等于“车”,或者是不是等于“友“,返回的结果是一组0、1的逻辑值。
如果想匹配不包含特定字符串,该怎么实现呢?
模糊匹配,不包含特定字符串
# 查找content字段不包含“车友”字符串的记录 select * from club_content where content not REGEXP '车友'
Regexp关键字及正则表达式的常用通配符
在Mysql中使用Regexp关键字来指定正则表达式的匹配内容。
语法:
字段 regexp ‘匹配字符’;
MySQL中使用 REGEXP 操作符来进行正则表达式匹配。根据正则表达式的规则,用来查询或者替换符合指定要求的内容。
–select <字段> from 表 where <字段> REGEXP '通配符/字符';
示例:
#匹配符合要求的多个字符/字符串
--字符*和+都可以匹配多个该符号之前的字符。不同的是,,而*可以表示 0 个字符。
'--select <字段> from 表 where <字段> REGEXP '字符1+'; '--+结果匹配‘字符1'一次或多次
--select <字段> from 表 where <字段> REGEXP '^字符1*'; --匹配‘字符1' 0次或多次
#匹配指定的字符/字符串,需要匹配多个的场合,使用‘|'分号隔开。
'--select <字段> from 表 where <字段> REGEXP '字符1|字符2|字符3*';
#查询以特定字符或字符串开头的数据
'--select <字段> from 表 where <字段> REGEXP '^字符';
#匹配指定字符以外的字符
'--select <字段> from 表 where <字段> REGEXP '[^字符1~字符3]*';
#查询以特定字符或字符串结尾的数据
android'--select <字段> from 表 where <字段> REGEXP '字符$';
#替代字符串中的任意一个字符,例如:a.b =acb,adb
'--select <字段> from 表 where <字段> REGEXP '字符1.字符2';
'#查询可以匹配指定字符串中的任意一个字符的字符串
'--select <字段> from 表 where <字段> REGEXP '[字符1字符2字符3]*';
'#查询陪陪指定集合的区间内容的数据
#[a-z]”表示从 a~z 的所有字母;“[0-9]”表示从 0~9 的所有数字;
“[a-z0-9]”表示包含所有的小写字母和数字;“[a-zA-Z]”表示匹配所有字符。
'--select <字段> from 表 where <字段> REGEXP '[字符1~字符3]*';
#使用{n,}或者{n,m}来指定字符串连续出现的次数
'--select <字段> from 表 where <字段> REGEXP '匹配的字符{匹配次数,}*';
例: --billy,silaly,tilly
'--select name from namestd where name regexp 'l{2,};
'--select <字段> from 表 where <字段> REGEXP '匹配的字符{匹配次数1,匹配次数2}';
'例:--LiMing,Lily,LiPingPing 匹配字母“i” 一至三次
'--select name from namestd where name regexp 'i{1,3};
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
暂时禁止评论












闽公网安备 35020302000061号