LIKE操作符
利用通配符可以对未知值进行过滤,创建特定数据的搜索模式
通配符:用来匹配值的一部分的特殊字符
搜索模式:由字面值、通配符或两者组合构成的搜索条件
在句子中使用通配符必须使用LIKE操作符
通配符只能用于文本字段,非文本数据类型不能使用通配符搜索
百分号(%)通配符
%表示任何字符出现任何次数(包括0次)
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的产品
SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE 'F%y';
找出产品名以F开头y结尾的所有产品
PS:子句WHERE prod_name LIKE 'F%y’只匹配以F开头、以y结尾的产品名。如果值后面跟空格,则不是以y结尾,所以Fish bean bag toy就不会被检索出来。简单的解决办法是给搜索模式再增加一个%号:'F%y%'还匹配y之后的所有字符(如空格)
通配符%不能匹配NULL
下划线(_)通配符
用于匹配单个字符,有多少个下划线就匹配多少个字符,不能多也不能少
SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE '__ inch tedddy bear';
#和 prod_name LIKE '% inch teddy bear'的检索结果不一样
%能匹配任意个数字符,而_只能匹配限定个数字符
方括号([])通配符
方括号通配符用来指定一个字符集,它必须匹配字符集中的一个字符
只有Access和SQL Server支持创建集合[]
SELECT cust_contact
FROM Customers
WHERE cust_contact LIKE '[JM]%';
找出所有名字以J或M开头的联系人
[]用于匹配任意方括号中的字符,但是一次只匹配单个字符
可以用前缀 ^ 来否定
SELECT cust_contact
FROM Customers
WHERE cust_contact LIKE '[^JM]%';
查询不以J或M开头的任意人名
也可以使用NOT操作符得到相同的结果
WHERE NOT cust_contact LIKE '[JM]%'
通配符的使用技巧
不要过度使用通配符,如果其他操作能达到相同目的尽量使用其他操作符,通配符耗费时间更长
要注意通配符放置的位置
使用通配符时尽量不要放在搜索模式开始的位置