通配符 wildcard
用来匹配值的一部分的特殊字符
*搜索模式 search pattern
字面值、通配符组成的搜索条件*
*谓词 predicate
严格来说,LIKE 是谓词而不是操作符*
LIKE 操作符
为了使用通配符及其构成的搜索模式,必须使用 LIKE 操作符
百分号 % 通配符
表示任何字符出现任意次数,但不能匹配 NULL
SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE 'Fish%'
-- 可以出现在任意位置
-- WHERE prod_name LIKE 'F%y'
下划线 _ 通配符
用法与 % 一样,但只匹配单个字符
方括号 [] 通配符
指定一个字符集(集合),匹配一个字符
注意,SQL Server 支持集合,MySQL,Oracle,DB2,SQLite 都不支持
SELECT cust_contact
FROM Customers
WHERE cust_contact LIKE '[JM]%'
-- 可用脱字号^来否定,与NOT类似
-- WHERE cust_contact LIKE '[^JM]%'
使用通配符的技巧
- 通配符搜索耗费更长的处理时间
- 不要过度使用通配符,如果能达到相同目的,使用其他操作符
- 尽量不要把通配符用在搜索模式的开始处,这样是最慢的