MySQL使用正则表达式查询,REGEXP 的使用

 常用的字符匹配列表

选项 说明 例子 匹配示例
^ 开始匹配 ‘^b’:匹配以b开始的字符串 book,bit
$ 结束匹配 'str$':匹配以str结尾的字符串 astr,bstr
. 匹配任意单个字符 a.c abc,adc
* 匹配0或多个字符 *abc 123abc,abc,1abc
+ 匹配1或多次 abc+ abc1
字符串 匹配字符串文本 ‘abc’ ‘abcd’,'afabc'
[字符合集] 匹配字符集合中任何一个字符 '[ab]' 'abc','a','bbbb'
[^] 匹配不在括号中的任何字符 ‘[^abc]’:匹配不包含,a\b\c的字符串 ‘123’,‘dd’
字符串{n,} 匹配前面的字符串至少n次 b{2}:匹配2个或者更多的b bbb,bbbb
字符串{n,m} 匹配前面的字符串至少n次,至多m次 b{2,4}:匹配b至少2,至多4 bb,bbb,bbb

1、匹配以特定字符开头的文本

select * from student where name REGEXP '^张'

结果

MySQL使用正则表达式查询,REGEXP 的使用_第1张图片

2、查询一特定字符结尾

select * from student where name REGEXP '一$'

结果

MySQL使用正则表达式查询,REGEXP 的使用_第2张图片

3、使用.来匹配任意一个字符

select * from student where name REGEXP '.一';

MySQL使用正则表达式查询,REGEXP 的使用_第3张图片

4、使用*和+来匹配多个字符

select * from student where name REGEXP 'a+';

结果

MySQL使用正则表达式查询,REGEXP 的使用_第4张图片

5、匹配指定字符串

查询包含abc或者abb的字符串

select * from student where name REGEXP 'abc|abb';

结果

MySQL使用正则表达式查询,REGEXP 的使用_第5张图片

6、匹配指定字符串中的任意一个(试了下,对中文字符匹配结果很诡异,不建议匹配中文)

select * from student where name REGEXP '[ab]';

结果

匹配中文:李四不晓得为啥跑进来了

MySQL使用正则表达式查询,REGEXP 的使用_第6张图片

7、匹配指定意外的字符串

返回所有字符串不在a-z之间的结果
select * from student where name REGEXP '[^a-z]';

结果

MySQL使用正则表达式查询,REGEXP 的使用_第7张图片

8、使用{n,}或者{n,m}来指定字符串连续出现的次数

{n,}:匹配>=n

{n,m}:匹配  n<=  x <= m

SELECT * from student where name REGEXP 'a{2,}'

结果

SELECT * from student where name REGEXP 'b{2,4}'

结果

 

附上建表语句

CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES ('1', '张一', '13');
INSERT INTO `student` VALUES ('2', '李四', '56');
INSERT INTO `student` VALUES ('3', '王五', '18');
INSERT INTO `student` VALUES ('4', '张三', '21');
INSERT INTO `student` VALUES ('5', 'abbbbc', '12');
INSERT INTO `student` VALUES ('6', 'aabc33', '12');

 

 

 

 

 

 

你可能感兴趣的:(mysql)