天天看点

Mysql使用正则表达式-regexp

正则表达式是用某种模式去匹配一类字符串的一种方式,其查询能力要远在通配字符之上。

在mysql中使用REGEXP关键字来匹配查询正则表达式。

demo

SELECT * FROM tablename WHERE columnname REGEXP ‘xxx’;

column 后面用 regexp 加一个正则表达式。。

正则表达式就不写了

网上找了些demo

*模式字符 *

其含义为匹配以特定字符或者字符串开头的记录。

例如:使用“^”表达式查询tb1中major字段以m开头的记录,则语句如下:

Select major from tb1 where major regexp ‘^m’;

模式字符 $

其含义为匹配以特定字符或者字符串结尾的记录。

例如:使用“$”表达式查询tb1中major字段以c结尾的记录,则语句如下:

Select major from tb1 where major regexp ‘c$’;

模式字符 .

其含义为匹配字符串中任意一个字符,包括回车或者换行等。

例如:使用“.”表达式查询tb1中number字段包含4的记录,则语句如下:

Select number from tb1 where major regexp ‘4.’;

(我举得这种情况 . 可以省略)

模式字符 [字符集合]

其含义为匹配字符集合中任意一个字符

例如:使用“[ ]”表达式查询tb1中number字段包含456的记录,则语句如下:

Select number from tb1 where major regexp ‘[456]’;

模式字符 S1|S2|S3

其含义为匹配 S1、S2、S3中的任意一个字符串

例如:查询tb1中major字段包含a、p或者mic字符中任意一个字符的记录,则语句如下:

Select * from tb1 where major regexp ‘a|p|mic’;

模式字符 *

其含义为匹配多个该字符之前的字符,包括0和1个。

例如:使用“*”表达式查询tb1中major字段中m字符前出现c字符的记录,则语句如下:

Select major from tb1 where major regexp ‘c*m’;

模式字符 +

其含义为匹配多个该字符之前的字符,包括 1个。

例如:使用“+”表达式查询tb1中major字段中m字符前至少出现一个c字符的记录,则语句如下:

Select major from tb1 where major regexp ‘c+m’;

模式字符 字符串{N}

其含义为匹配字符出现N次。

例如:使用“{N}”表达式查询tb1中major字段中连续出现2次m的记录,则语句如下:

Select major from tb1 where major regexp ‘m{2}’;

模式字符 字符串{M,N}

其含义为匹配字符至少出现M次,做多N次。

例如:使用“{M,N}”表达式查询tb1中major字段中连续出现2次m的记录,最多出现3次m字符的记录,则语句如下:

Select major from tb1 where major regexp ‘a{2,3}’;

*最后就是把以前的

where columnname=’dddd’

的 等于 改为 regexp 后面加个正则表达式就行*

继续阅读