MySql通配符过滤,正则表达式过滤.

时间:2022-09-16 11:22:26

百分号通配符:在搜索串中,%表示任意字符出现的任何次数。

                         1:找出所有以jet开头的产品

                              SELECT prod_name,prod_price from products WHERE prod_name like'jet%'。

                                 2:匹配任何位置包含文本anvil的值 

                              SELECT prod_name,prod_price from products WHERE prod_name like'%anvil%'      

                                注意:%可以匹配0个字符,但不能匹配null值.

下划线通配符:下划线只匹配单个字符而不是多个字符。

                         1:SELECT prod_name,prod_price from products WHERE prod_name like'_ ton anvil%'

通配符使用技巧:1、不要过度使用通配符,如果使用其他操作符能达到相同的目的,应该使用其他操作符;

                          2、在确实使用通配符时,最好不要把它们置于搜索模式的开始处.那样是最慢的.



正则表达式:1:检索列prod_name中包含文本1000的所有行

                           SELECT prod_name,prod_price from products WHERE prod_nameREGEXP '1000'ORDER BY prod_name;

                      2:检索列prod_name中包含文本000的所有行

                            prod_name,prod_price from products WHERE prod_nameREGEXP '.000'ORDER BY prod_name;

                            上面正则表达式中的“.”表示匹配任意一个字符。

                      3:检索列prod_name中包含文本1000或2000的所有行     

                               SELECT prod_name,prod_price from products WHERE prod_name REGEXP '1000|2000'ORDER BY prod_name;

                          4:匹配几个字符之一

                               SELECT prod_name,prod_price from products WHERE prod_nameREGEXP '[1-3] ton' ORDER BY prod_name;

                               [1-3]意思为“1|2|3”  如图

                               MySql通配符过滤,正则表达式过滤.MySql通配符过滤,正则表达式过滤.MySql通配符过滤,正则表达式过滤.

                              匹配特殊字符

                              SELECT prod_name,prod_price from products WHERE prod_nameREGEXP '\\.'ORDER BY prod_name;

                              上面为了匹配特殊字符,需要使用\\为前导(转义)  为了匹配“\”,需要使用“\\\”

                         5:   匹配字符类

                               SELECT prod_name,prod_price from products WHERE prod_nameREGEXP '[:upper:]' ORDER BY prod_name;

                              REGEXP '[:upper:]' 表示匹配任意大写字母。还有其它字符类如下:

                              MySql通配符过滤,正则表达式过滤.MySql通配符过滤,正则表达式过滤.MySql通配符过滤,正则表达式过滤.

                        6:匹配多个实例  

                              重复元字符

                             MySql通配符过滤,正则表达式过滤. MySql通配符过滤,正则表达式过滤.MySql通配符过滤,正则表达式过滤.    

                          SELECT prod_name,prod_price from products WHERE prod_nameREGEXP '\\([0-9] sticks?\\)'ORDER BY prod_name;

                           解释一下:第一个\\转义“(”   用 [0-9]表示匹配任意数字,sticks?表示匹配stick 或者sticks ,"?"使得sticks后的s变为可选值. ?表示它前面的字符出现0次或者1次。                                                最后一个\\转义")"

                           输出为:MySql通配符过滤,正则表达式过滤.

                      7:SELECT prod_name,prod_price from products WHERE prod_nameREGEXP '[[:digit:]]{4}'ORDER BY prod_name;

                           REGEXP '[[:digit:]]{4}'匹配连在一起的任意4位数字.

                      8:定位符

                           MySql通配符过滤,正则表达式过滤.MySql通配符过滤,正则表达式过滤.MySql通配符过滤,正则表达式过滤.

                           ^有两种用法,在集合中(用“[”和“]”)定义,用它来否定该集合,否则,用来指串的开始处.

                          SELECT prod_name,prod_price from products WHERE prod_nameREGEXP '^[0-9\\.]'ORDER BY prod_name;

                         找出以任意数字为串中第一个字符时的匹配;

                        

                        正则表达式与like的区别:like匹配整个串,而regexp匹配子串.利用定位符,用"^"开始,"$"结尾,可以使regexp与like的作用一样.