百分号通配符:在搜索串中,%表示任意字符出现的任何次数。
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” 如图
匹配特殊字符
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:]' 表示匹配任意大写字母。还有其它字符类如下:
6:匹配多个实例
重复元字符
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次。 最后一个\\转义")"
输出为:
7:SELECT prod_name,prod_price from products WHERE prod_nameREGEXP '[[:digit:]]{4}'ORDER BY prod_name;
REGEXP '[[:digit:]]{4}'匹配连在一起的任意4位数字.
8:定位符
^有两种用法,在集合中(用“[”和“]”)定义,用它来否定该集合,否则,用来指串的开始处.
SELECT prod_name,prod_price from products WHERE prod_nameREGEXP '^[0-9\\.]'ORDER BY prod_name;
找出以任意数字为串中第一个字符时的匹配;
正则表达式与like的区别:like匹配整个串,而regexp匹配子串.利用定位符,用"^"开始,"$"结尾,可以使regexp与like的作用一样.