MySQL使用正则表达式查询

         在MySQL中,使用REGEXP关键字指定正则表达式的字符匹配模式。

正则表达式常用的字符匹配列表
选项 描述 例子 匹配值示例
^ 匹配文本的开始字符 ^b:匹配以b开头的字符串 book,big,banana
$ 匹配文本的结束字符 st$:匹配以st结尾的字符串 test,persist,reist
. 匹配任意单个字符 b.t:匹配b和t之间一个字符的字符串 bit,bat,bite,but
* 匹配零个或多个在它前面的字符

f*n:匹配n前面0个或多个f字符的字符串

fn,fan,abcn
+ 匹配前面的字符一次或者多次 ba+:匹配以b开头后面紧跟一个或多个a的字符串 ba,bay,battle,bare
<字符串> 匹配包含指定的字符串文本 fa:匹配包含“fa”的字符串 fan,faad,afa
[字符集合] 匹配字符集合中的任意一个字符 '[xz]':匹配x或者z ddizzy,zebra,extra
[^] 匹配不在括号中的任意字符 '[^abc]':匹配任何不包含a、b、c的字符串 desk,fox
{n} 匹配前面的字符串至少n次 b{2}:匹配至少有两个b字符的字符串 bbbb,bb,bbbbbb
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。 b{2,4}:匹配最少有两个,最多四个b字符的字符串 bbb,bb,bbbb

1.查询以特定字符或字符串开头的记录(^)

例如:查询以“b”开头的记录。

select * from 表名 where name REGEXP '^b';

 

2.查询以特定字符或字符串结尾的记录($)

例如:查询以“be”开头的记录。

select * from 表名 where name REGEXP 'be$';

 

3.替代字符串中任意一个字符(.)

例如:查询a与g之间有一个字符的记录。

select * from 表名 where name REGEXP 'a.g';

 

4.匹配多个字符(*)

*:匹配零个或多个它前面的字符

+:匹配至少一次前面的字符

如:f*n 表示匹配零个或多个 f 字符的字符串

例1:查询以b开头,后面有零个或多个a字母的记录。

select * from 表名 where name REGEXP '^ba*';

例2:查询以b开头,后面有至少一个a字母的记录。

select * from 表名 where name REGEXP '^ba+';

 

5.匹配指定字符串

例如:查询包含 on 的记录。

select * from 表名 where name REGEXP 'on';

把'on'改为'on|ap'表示,包含on或者ap都行。

 

6.匹配指定字符串任意一次([字符])

例如:表中字段值包含字母o或t的记录。

select * from 表名 where name REGEXP '[ot]';

[456] = [4-6],表示包含4,5,6中的其中一个。

 

7.匹配指定字符以外的字符 ([^字符])

[^字符集合]:表示匹配不在集合中的任意字符。

例如:查询字段中包含a~e和1~6以外的字符记录。

select * from 表名 where name REGEXP '[^a-e1-6]';

 

8.指定字符串连接出现的次数 ({n,m})

例如:查询name字段中至少出现两次“x”的记录。

select * from 表名 where name REGEXP 'x{2,}';

{n,}:表示匹配至少n次前面的字符。

{n,m}:表示匹配前面的字符串不少于n次,不多于m次。

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(MySQL)