第8章 用通配符进行过滤

  1. LIKE操作符
  2. 百分号(%)通配符
  3. 下划线(_)通配符
  4. 使用通配符的技巧

  

一、LIKE操作符

  前面介绍的所有操作符都是针对已知值进行过滤的。怎样搜索产品中包含文本anvil的所有产品?必须使用通配符。利用通配符可以创建比较特定数据的搜索模式。

通配符:用来匹配值的一部分的特殊字符。搜索模式:由字面值、通配符或两者组合构成的搜索条件。

  通配符本身实际是SQL的where子句中特殊含义的字符,SQL支持几种通配符。

  为了搜索子句中使用通配符,必须使用like操作符。like指示MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。

1、百分号(%)通配符

  最常用的通配符是百分号(%)。在搜索串中,%表示任何字符出现任意的次数。

例如,为了找出所有以词jet起头的产品。

  1. select prod_id, prod_name
  2. from products
  3. where prod_name like 'jet%';

  通配符可以在搜索模式中任意位置使用,并且可以使用多个通配符。

  1. select prod_id, prod_name
  2. from products
  3. where prod_name like '%anvil%';

  以上表示匹配任何位置包含文本anvil的值。

注意%还能匹配0个字符。

  

注意尾空格尾空格可能会干扰通配符匹配。例如,在保存词anvil时,如果它后面有一个或多个空格,则子句where prod_name like '%anvil'将不会匹配它们,因为在最后的l后有多于的字符。解决这个问题的一个简单的办法是在搜索模式最后附加一个%。一个更好的办法是使用函数去掉首尾空格。

  

注意null虽然似乎%通配符可以匹配任何东西,但有一个例外,即null。即使是where prod_name like '%'也不能匹配用值null作为产品名的行。

2、下划线(_)通配符

下划线只匹配单个字符,不包含0个。

  1. select prod_id, prod_name
  2. from products
  3. where prod_name like '_ ton anvil';

  

二、使用通配符的技巧

  通配符搜索的处理一般要比前面的其它搜索所花时间更长。

  ※ 不要过度使用通配符。如果其它操作符能达到相同的目的,应该使用其它操作符。  ※ 在确定需要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的。

  

?