LIKE操作符:
要过滤较为复杂的条件,就要使用通配符。利用通配符,可以创建比较特定数据的搜索模式。
百分号%通配符:最常用的通配符就是%。%表示任何字符出现任意次数。
select prod_id, prod_name
from Products
where prod_name like 'Fish%';
这条语句检索的是以Fish开头的字段全部搜索出来。搜索是可以区分大小写的。
通配符可以在搜索模式中的任意位置使用,并且可以使用多个通配符。
select prod_id, prod_name
from Products
where prod_name like '%bean bag%';
此语句表示只要中间含有bean bag字段的数据全部检索出来了。
通配符也可以出现在搜索模式的中间。除了能匹配一个或多个字符外,%还能匹配0个字符。
但%不匹配NULL值。
下划线_通配符:
下划线的用途和%一样都是匹配任一字符,但_只能匹配单一的字符。
select prod_id, prod_name
from Products
where prod_name like '__ inch teddy bear';
这里使用两个下划线来匹配数据,所以原表中的'8 inch teddy bear'就没有被检索出来,因为搜索模式要求匹配两个通配符而不是一个。
若在此处使用%将会全部检索出来。
方括号[]通配符:
方括号通配符用来指定一个字符集,它必须匹配指定位置的一个字符。
select cust_contact
from Customers
where cust_contact like '[JM]%'
order by cust_contact;
[JM]匹配方括号中的任意一个字符,它也只能匹配一个字符。所以该语句表示检索出以J或M开头的所有字段。
此通配符可以用前缀字符^来表否定。
select cust_contact
from Customers
where cust_contact like '[^JM]%'
order by cust_contact;
这里将检索出所有开头不为JM的字段。
^的唯一优点就是在使用多个where子句的时候可以简化语法。
使用通配符的技巧:
不要过度的使用通配符。
在确实需要使用通配符时,也尽量不要把它们用在搜索模式的开始处,这样是最慢的。
仔细注意通配符的位置。如果放错地方,可能不会返回相要的数据。