mysql使用正则表达式查询数据,正则表达式关键字regexp。
数据库表user表,内有字段
1、查询name字段包含a-w字母和数字之外字符的记录
SELECT * FROM `user` WHERE `name` REGEXP '[^a-w0-9]';
2、查询包含jack的记录
SELECT * FROM `user` WHERE `name` REGEXP 'jack';
3、查询包含000的数据(正则中. 表示匹配任意字符)
SELECT * FROM `user` WHERE `name` REGEXP '.0000';
4、mysql正则大小写都会匹配,为区分大小写可使用binary关键字,如:
SELECT * FROM `user` WHERE `name` REGEXP BINARY 'G'; -- 查询包含G的记录(小写一样)
SELECT * FROM `user` WHERE `name` LIKE BINARY '%G%'; -- 查询包含G的记录(小写一样)
5、| 正则中相当于or操作符,表示匹配其中之一
SELECT * FROM `user` WHERE `name` REGEXP 'j|g'; -- 查询name字段包含j或g的记录
6、匹配特定字符,使用 [ ] 括起来的字符,将会匹配其中任意单个字符
SELECT * FROM `user` WHERE `name` REGEXP '[aed]k11'; -- [aed]定义一组字符,匹配a或e或d
7、^ 匹配字符开始的部分
SELECT * FROM `user` WHERE `name` REGEXP '^j'; -- 查询以j开始的记录
8、$ 匹配字符结束的部分
SELECT * FROM `user` WHERE `name` REGEXP 'g$' ; -- 查询以g结束的记录
9、. 匹配字符串中的任意一个字符,包括回车和换行
SELECT * FROM `user` WHERE `name` REGEXP '^j..k$'; -- 查询以j开始,k结束,中间包含两个字符的数据
10、[ ] 匹配字符结合中的任意字符
SELECT * FROM `user` WHERE `name` REGEXP '[jkg]'; -- 查询包含j、k、g任意字符的记录
11、[ ^ 字符 ] 匹配除字符集合外的任意字符
SELECT * FROM `user` WHERE `name` REGEXP '[^0-9]'; -- 查询除数字之外的记录
12、* 表示0个或多个字符
SELECT * FROM `user` WHERE `name` REGEXP 'j*k'; -- 查询包含jk或jk中间有多个字符的记录
13、+ 表示0个字符
SELECT * FROM `user` WHERE `name` REGEXP 'j+k'; -- 查询包含jk的记录
14、字符串{ } 表示字符串出现的次数
SELECT * FROM `user` WHERE `name` REGEXP 'k{2}'; -- 查询k连续出现2次的记录
15、字符串 { M, N } 表示最少出现M次,最多出现N次
SELECT * FROM `user` WHERE `name` REGEXP 'ck{3,6}';
MYSQL中自带通配符(LIKE关键词),%可以表示任意长度的字符(包括0), -可以表示单个字符