使用MySql正则表达式的方法

正则表达式是用来匹配文本的特殊的字符串,是一种特殊的语言。在SQL中使用正则表达式可以快速将一个模式与一个文本串进行比较,完成文本的匹配。这里仅总结常使用的正则表达式。
1.MySql使用正则表达式的基本语法
从一个简单的例子开始,检索,检索列n_name包含文本100的所有行,语法如下:
举例:Select n_name from product where n_name regexp ‘100’ order by n_name;
上述语法可以看出,sql语法中,使用使用正则表达式,关键字为”regexp”,它的作用可以类别”like”。
2.正则表达式常用通配符
(1)匹配任意一个字符“.”
举例:Select n_name from product where n_name regexp ‘.00’ order by n_name;
“.”代表可以匹配任意一个字符,因此带有100,200,300,或者x00的文本行都会被筛选出来
(2)或者匹配“|”
举例:Select n_name from product where n_name regexp ‘100|200’ order by n_name;
“|”即为日常逻辑的“或”关系,如果文本行中,存在100,或者200,这些文本都会被筛选出来
(3)匹配几个字符之一“[]”
举例:Select n_name from product where n_name regexp ‘[123]ame’ order by n_name;
“[]”表示匹配[]内的字符之一,这里的语法会返回符合1ame,2ame,3ame字符串的文本行,其实“[123]”可以理解为是“1|2|3”的替代版;但是如果将“[123]ame”换成上述的语法,就会变成“1ame|2ame|3ame”,实际上语法会变得很长
(4)匹配一定的范围“[],-”
举例:Select n_name from product where n_name regexp ‘[1-9]ame’ order by n_name;
“[1-9]”显示了一个完整功能的范围,可以理解为[123456789],范围不一定显示的是数字范围,也可以是字母范围,比如[a-z],起使点和结束点也不一定从1或开始,比如[6-8],[c-h]也是可以的。这时返回的文本行可能为1ame,2ame,3ame,4ame,5ame,6ame,7ame,8ame,9ame
(5)匹配特殊字符“\”
举例:Select n_name from product where n_name regexp ‘\.’ order by n_name;
“\”用来筛选匹配特殊的字符,例如上述语法中“.”代表所有字符,如果想获取“.”字符,就需要加“\”来筛选出含有“.”的文本行
相关的特殊字符行还有:\f对应换页;\n对应换行;\r对应回车;\t对应制表;\v对应纵向制表
(6)一次或0次“?”
举例:Select n_name from product where n_name regexp ‘ame?r’ order by n_name;
“?”代表“?”前方的字符是出现一次或0次,即使得e可选,e可以有,也可以没有,因此可能包含的筛选出的文本行有amer,amr
(7)匹配任意次“{}”
举例:Select n_name from product where n_name regexp ‘[[12]]{3}’ order by n_name;
“{}”内填写的数字,要求前方的字符要出现{}内数字的次数才可以,上述的文本行要求出现3次前方的文本行,即包含111,112,121,211,212,222的文本行都可被筛选出来。
(8)定位符“^”
举例:Select n_name from product where n_name regexp ‘1ame’ order by n_name;
“^”显示特殊位置的文本,这里显示要检索出一个数字或者“.”开始的名称,定位符的筛选结果为包含.ame,1ame,2ame,3ame的文本
同时“^”也在集合中用来否定集合,集合中“(用[和]定义)”这种关系,如果不是否定关系,就是用来指定字符串的开始处。


  1. 1-3\. ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值