通配符 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]%'

使用通配符的技巧

  • 通配符搜索耗费更长的处理时间
  • 不要过度使用通配符,如果能达到相同目的,使用其他操作符
  • 尽量不要把通配符用在搜索模式的开始处,这样是最慢的