简介
- 通配符(wildcard) 是用来匹配值的一部分的特殊字符。
- 搜索模式(search pattern) 是由字面值、通配符或者两者组合构成的搜索条件。
本文介绍如何使用通配符以及怎样使用LIKE操作符进行统配搜索,方便对数据进行复杂过滤。
LIKE操作符
通配符本身实际是 SQL 的 WHERE 子句中含有特殊意义的字符。我们可以使用LIKE操作符来合法化这些字符。
百分号(%)通配符
在搜索串中,% 表示任何字符出现的任意次数。例如,为了找出所有以词 jet 起头的产品,可以使用SELECT语句。
SELECT prod_id, prod_name
FROM products
WHERE prod_name LIKE "jet%;
需要注意的是, MySQL的搜索是默认区分大小写的。
同样通配符也可以用于两端:
SELECT prod_id, prod_name
FROM products
WHERE prod_name LIKE "%anvil%;
无论他们有多长。也可以放置于搜索模式的中间,并且除了一个或者多个字符以外,% 也可以匹配0个字符。
SELECT prod_id, prod_name
FROM products
WHERE prod_name LIKE "s%e;
需要注意的三点是:
- MySQL的搜索是默认区分大小写的。
- 尾部空格可能会干扰通配符匹配
- % 通配符无法匹配到 NULL。
下划线(_)通配符
下划线的逻辑与百分号一样,但是下划线只匹配单个字符而不是多个字符。
参考:MySQL必知必会第八章