mysql正则表达式查询,MySQL 正则表达式查询

正则表达式用来匹配文本的特殊的串(字符集合)。正则表达式用正则表达式语言来建立,正则表达式语言是用来完成匹配特殊的串的一种特殊语言。

Regexp关键字告诉MySQL后面所跟的东西作为正则表达式处理。

以下使用student、courses、classes表查询

student表

764e2a9998a7

image.png

courses表

764e2a9998a7

image.png

classes表

764e2a9998a7

image.png

查询s_name 中有有 ‘王’字的姓名(与like关键字类似)

select s_no,s_sex,s_name from student where s_name REGEXP BINARY '王' order by s_name;

764e2a9998a7

image.png

查询coursesname中包含H的名字,不区分大小写

select * from courses s where s.coursesname REGEXP 'H' order by s.coursesname;

764e2a9998a7

image.png

利用关键字REGEXP BINARY 关键字,可以进行大小写区分。

select * from courses s where s.coursesname REGEXP BINARY 'h' order by s.coursesname;

764e2a9998a7

image.png

Regexp 进行OR匹配

‘|’ 表示OR操作符,它表示匹配其中之一,因此H和J都匹配并返回

多个OR条件,可以利用单个正则表达式进行匹配。

select * from courses s where s.coursesname REGEXP 'H|J' order by s.coursesname;

764e2a9998a7

image.png

Regexp 进行特定字符匹配

Regexp 匹配几个字符之一,利用 [] 表示、另一种形式的OR

王[丽|红|艳] == 王丽 或者王红 或者王艳 为 王[丽|红|艳] 的缩写

select s_no,s_sex,s_name from student where s_name REGEXP '王[丽|芳]' order by s_name;

764e2a9998a7

image.png

也可以不带括号:

select s_no,s_sex,s_name from student where s_name REGEXP '王|丽|芳' order by s_name;

764e2a9998a7

image.png

Regexp 进行范围匹配

[0-9] 0到9数字匹配

[a-z] a到z字母匹配

select * from classes s where s.classname REGEXP 'p[A-Z]' order by s.classname;

764e2a9998a7

image.png

select * from classes s where s.classname REGEXP 'py[0-9]' order by s.classname;

764e2a9998a7

image.png

Regexp 进行特殊字符匹配

特殊字符匹配,多数的正则表达式实现是使用单个的反斜杠进行转义特殊字符

select * from classes s where s.classname REGEXP '\\.' order by s.classname;

764e2a9998a7

image.png

匹配连在一起的3位数字

select * from classes s where s.classname REGEXP '[[:digit:]]{3}' order by s.classname;

select * from classes s where s.classname REGEXP '[0-9]{3}' order by s.classname;

764e2a9998a7

image.png

^匹配字符串的开始位置

select * from classes s where s.classname REGEXP '^p' order by s.classname;

764e2a9998a7

image.png

$ 匹配字符串的结束位置

select * from classes s where s.classname REGEXP '#$' order by s.classname;

764e2a9998a7

image.png

$ 匹配字符串最后三个字符是数字

select * from classes s where s.classname REGEXP '[0-9]{3,}$' order by s.classname;

764e2a9998a7

image.png

^ 与 $ 的结合使用

查询以p开头1结尾中间有两个任意字符的记录

select * from classes s where s.classname REGEXP '^p..1$' order by s.classname;

764e2a9998a7

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值