SQL正则表达式
REGEXP | 说明 | 例子 |
---|---|---|
^ | 在字符开始处进行匹配 | ‘^a’:匹配以a开头的字符串 |
$ | 在字符结尾处进行匹配 | ‘b$‘’:匹配以b结尾的字符串 |
. | 匹配任何字符 | ‘.a‘’:匹配a前有任意字符的字符串 |
[…] | 匹配[]内任意单个字符 | ‘[ab]’:匹配其中有a或b的任意字符 |
[m-n] | 匹配[]内m-n的任意单个字符 | ‘[1-3]’:匹配含有1/2/3的任意字符串 |
[^…] | 不匹配[]内包含的全字符 | ‘[^abc]’:不返回只包含有a、b、c三个字母的字符串 |
* | 匹配0个或多个字符 | ‘a*’:匹配0个或多个a |
+ | 匹配1个或多个字符 | ‘a+’:匹配1个或多个a |
? | 匹配0个或1个字符 | ‘a?’:匹配0个或1个a |
a{m} | 匹配m个字符a | 略 |
a{m,} | 匹配m个或多个字符a | 略 |
a{m,n} | 匹配m到n个字符a | 略 |
() | 将模式元素组成单一元素 | ‘(abc)*’:匹配0个或多个abc |
MySQL操作如下:
首先生成一个新的table
SELECT * FROM try1.regexp_;
# 一、^
SELECT * FROM try1.regexp_ WHERE str REGEXP '^a'; # 筛选出以a开头的字符串
# 二、$
SELECT * FROM try1.regexp_ WHERE str REGEXP '$c'; #筛选出以c结尾的字符串
# 三、 .
SELECT * FROM try1.regexp_ WHERE str REGEXP '.b'; # 筛选出b前有任意字符的字符串
# 四、[]
SELECT * FROM try1.regexp_ WHERE str REGEXP '[abc]'; # 匹配含有a/b/c的所有字符串
# 五、[m-n]
SELECT * FROM try1.regexp_ WHERE str REGEXP '[1-3]'; # 匹配其中含1-3的所有字符串
# 六、[^]
SELECT * FROM try1.regexp_ WHERE str REGEXP '[^abc]'; # 剔除所有字符来自[]中的字符串
# 七、*
SELECT * FROM try1.regexp_ WHERE str REGEXP 'aa*'; # 已存在一个a后匹配0个或多个a
SELECT * FROM try1.regexp_ WHERE str REGEXP 'aaa*';
# 八、+
SELECT * FROM try1.regexp_ WHERE str REGEXP 'aa+'; # 已存在一个a后匹配一个或多个a,同'aaa*'
# 九、?
SELECT * FROM try1.regexp_ WHERE str REGEXP 'ab?'; #匹配0/1个b
# 十、{}
SELECT * FROM try1.regexp_ WHERE str REGEXP 'a{3}'; #匹配3个a
# 十一、{m,}
SELECT * FROM try1.regexp_ WHERE str REGEXP 'a{2,}'; #匹配2个或多个a
# 十二、{m,n}
SELECT * FROM try1.regexp_ WHERE str REGEXP 'b{1,3}'; #匹配1个到3个b
# 十三、()
SELECT * FROM try1.regexp_ WHERE str REGEXP '(ab)+'; #匹配一个或多个a