mysql的正则表达式

所谓正在表达式,就是通过模式去匹配一类字符串。MySQL支持的模式字符如下表所示:

MySQL支持的模式字符
模式字符 含义
^ 匹配字符串的开始部分
$ 匹配字符串的结束部分
. 匹配字符串中的任意一个字符
[字符集合] 匹配字符集合中的任意一个字符
[^字符集合] 匹配字符集合外的任意一个字符
str1|str2|str3 匹配str1,sr2和str3中的任意一个字符串
* 匹配字符,包含0个和1个
+ 匹配字符,包含1个
字符串{N} 字符串出现n次
字符串{m,n} 字符串出现至少M次,最多N次

在模式匹配的时候,如果相符则返回1,否则返回0。

1. 执行带有"^"模式字符的SQL。

SELECT 'cjgong' REGEXP '^c' 特定字符开头,'cjgongcjgong' REGEXP '^cjgong' 特定字符串开头;

执行SQL,结果如下所示:

2. 执行带有"$"模式字符的SQL。

SELECT 'cjgong' REGEXP 'g$' 特定字符结尾,'cjgongcjgong' REGEXP 'cjgong$' 特定字符串结尾;

执行SQL,结果如下所示:

3. 执行带有"."模式字符的SQL。

SELECT 'cjgong' REGEXP '^c....g$' 匹配4个任意字符

执行SQL,结果如下所示:

4. 执行带有"[]"和"[^]"模式字符的SQL。

SELECT 'cjgong' REGEXP '[abc]' 指定字符串字符,'cjgong' REGEXP '[a-zA-Z]' 指定字符串中的集合区间,

'cjgong' REGEXP '[^abc]' 指定字符外字符,'cjgong' REGEXP '[^a-zA-Z0-9]' 指定字符外集合区间;

执行SQL,结果如下所示:

5. 执行带有"*"和"+"模式字符的SQL。

SELECT 'cjgong' REGEXP 'a*g','cjgong' REGEXP 'a+g';

通过模式字符"*"和"+"可以匹配字符g之前是否有多个字符a,不过前者表示0个或任意个字符,而后者至少表示一个字符,因此显示结果分别为1和0。

执行SQL,结果如下所示:

6. 执行带有"|"模式字符的SQL。

SELECT 'cjgong' REGEXP 'cjg' 指定单个字符,'cjgong' REGEXP 'cjc|cjgc' 指定多个字符;

执行SQL,结果如下所示:

7. 执行带有"{M}"和{M,N}模式字符的SQL。

SELECT 'cccjgong' REGEXP 'c{3}' 匹配3个c,'cccjgongg' REGEXP 'g{2}' 匹配2个g,
'cgong' REGEXP 'cj{1,2}' 至少1个最多2个,'cjcjgong' REGEXP 'cj{1,2}' 至少1个最多2个;

c{3}表示字符串c连续出现3次,cj{1,2}表示字符串cj至少出现一次最多连接出现3次。

执行SQL,结果如下所示:

正则表达式的功能非常强大,使用正则表达式可以灵活地设置字符串匹配的条件。

posted @ 2015-07-12 16:16  人生设计师  阅读(273)  评论(0编辑  收藏  举报