第8章 用通配符进行过滤
LIKE操作符
百分号(%)通配符
下划线(_)通配符
使用通配符的技巧
一、LIKE操作符
前面介绍的所有操作符都是针对已知值进行过滤的。怎样搜索产品中包含文本anvil
的所有产品?必须使用通配符。利用通配符可以创建比较特定数据的搜索模式。
通配符:用来匹配值的一部分的特殊字符。
搜索模式:由字面值、通配符或两者组合构成的搜索条件。
通配符本身实际是SQL的where
子句中特殊含义的字符,SQL支持几种通配符。
为了搜索子句中使用通配符,必须使用like
操作符。like
指示MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。
1、百分号(%)通配符
最常用的通配符是百分号(%
)。在搜索串中,%
表示任何字符出现任意的次数。
例如,为了找出所有以词jet
起头的产品。
select prod_id, prod_name
from products
where prod_name like 'jet%';
通配符可以在搜索模式中任意位置使用,并且可以使用多个通配符。
select prod_id, prod_name
from products
where prod_name like '%anvil%';
以上表示匹配任何位置包含文本anvil
的值。
注意:
%
还能匹配0
个字符。
注意尾空格 尾空格可能会干扰通配符匹配。例如,在保存词
anvil
时,如果它后面有一个或多个空格,则子句where prod_name like '%anvil'
将不会匹配它们,因为在最后的l
后有多于的字符。解决这个问题的一个简单的办法是在搜索模式最后附加一个%
。一个更好的办法是使用函数去掉首尾空格。
注意
null
虽然似乎%
通配符可以匹配任何东西,但有一个例外,即null
。即使是where prod_name like '%'
也不能匹配用值null
作为产品名的行。
2、下划线(_)通配符
下划线只匹配单个字符,不包含0
个。
select prod_id, prod_name
from products
where prod_name like '_ ton anvil';
二、使用通配符的技巧
通配符搜索的处理一般要比前面的其它搜索所花时间更长。
※ 不要过度使用通配符。如果其它操作符能达到相同的目的,应该使用其它操作符。 ※ 在确定需要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的。
🔚