标准SQL匹配和正则表达式匹配

MySQL中的模式匹配分为两种:

        一种是标准SQL匹配,另一种是 正则表达式匹配


标准SQL匹配,我们通常用的最多的一种方式

        a:使用LIKE和NOT LIKE比较操作符(注意不能使用=或!=); 

        b:模式默认是忽略大小写的; 

        c:允许使用”_”匹配任何单个字符,”%”匹配任意数目字符(包括零字符); 


正则表达式匹配。用的极少,极其影响性能

        a:使用REGEXP和NOT REGEXP操作符


       b:标准SQL匹配即LIKE,使用的是完全匹配,REGEXP使用的是部分匹配。


        所谓完全匹配就是只有被匹配字符完全和所定义的模式匹配,才匹配成功,而部分匹配是只要被匹配字符包含或者可以等于所定义的模式,就匹 配成功。



正则表达式匹配示例


所匹配的字符串以后面的字符串开头 


mysql> select "fonfo" REGEXP "^fo$"; -> 0(表示不匹配) 

mysql> select "fofo" REGEXP "^fo"; -> 1(表示匹配) 


所匹配的字符串以前面的字符串结尾 


mysql> select "fono" REGEXP "^fono$"; -> 1(表示匹配) 

mysql> select "fono" REGEXP "^fo$"; -> 0(表示不匹配) 


匹配任何字符(包括新行) 


mysql> select "fofo" REGEXP "^f.*"; -> 1(表示匹配) 

mysql> select "fonfo" REGEXP "^f.*"; -> 1(表示匹配) 


a* 匹配任意多个a(包括空串) 


mysql> select "Ban" REGEXP "^Ba*n"; -> 1(表示匹配) 

mysql> select "Baaan" REGEXP "^Ba*n"; -> 1(表示匹配) 

mysql> select "Bn" REGEXP "^Ba*n"; -> 1(表示匹配) 


a+ 匹配1个或多个a字符的任何序列。 


mysql> select "Ban" REGEXP "^Ba+n"; -> 1(表示匹配) 

mysql> select "Bn" REGEXP "^Ba+n"; -> 0(表示不匹配) 


a? 匹配一个或零个a 


mysql> select "Bn" REGEXP "^Ba?n"; -> 1(表示匹配) 

mysql> select "Ban" REGEXP "^Ba?n"; -> 1(表示匹配) 

mysql> select "Baan" REGEXP "^Ba?n"; -> 0(表示不匹配) 


de|abc 匹配de或abc 


mysql> select "pi" REGEXP "pi|apa"; -> 1(表示匹配) 

mysql> select "axe" REGEXP "pi|apa"; -> 0(表示不匹配) 

mysql> select "apa" REGEXP "pi|apa"; -> 1(表示匹配) 

mysql> select "apa" REGEXP "^(pi|apa)$"; -> 1(表示匹配) 

mysql> select "pi" REGEXP "^(pi|apa)$"; -> 1(表示匹配) 

mysql> select "pix" REGEXP "^(pi|apa)$"; -> 0(表示不匹配) 



(abc)* 匹配任意多个abc(包括空串) 


mysql> select "pi" REGEXP "^(pi)*$"; -> 1(表示匹配) 

mysql> select "pip" REGEXP "^(pi)*$"; -> 0(表示不匹配) 

mysql> select "pipi" REGEXP "^(pi)*$"; -> 1(表示匹配) 


{1} {2,3} 这是一个更全面的方法,它可以实现前面好几种保留字的功能 

a* 可以写成a{0,} 

a 可以写成a{1,} 

a? 可以写成a{0,1} 

在{}内只有一个整型参数i,表示字符只能出现i次;在{}内有一个整型参数i, 后面跟一个“,”,表示字符可以出现i次或i次以上;在{}内只有一个整型参数i, 后面跟一个“,”,再跟一个整型参数j,表示字符只能出现i次以上,j次以下(包括i次和j次)。其中的整型参数必须大于等于0,小于等于 RE_DUP_MAX(默认是255)。 如果同时给定了m和n,m必须小于或等于n.


注意  匹配特殊字符

\\  为前导。即转义.正则表达式内具有特殊意义的所有字符都必须以这种方式转义。

\\-  表示查找 -

\\.  表示查找 .

猜你喜欢

转载自blog.csdn.net/timy07/article/details/80282293