MySQL LIKE 子句

用 LIKE 做模式匹配,% 与 _ 的用法与索引陷阱。

Beginner
Key PointsLIKE 适合简单的包含/前缀匹配;复杂文本检索应改用全文索引。

通配符

SQL
SELECT * FROM users WHERE username LIKE 'a%';     -- 以 a 开头
SELECT * FROM users WHERE email LIKE '%example.com'; -- 以 example.com 结尾
SELECT * FROM users WHERE username LIKE '____';    -- 正好 4 个字符
SELECT * FROM users WHERE username LIKE '%li%';    -- 包含 li
Output
+----+----------+-----+
| id | username | age |
+----+----------+-----+
|  1 | alice    |  29 |
+----+----------+-----+

大小写与转义

SQL
-- 转义 % 或 _
SELECT * FROM users WHERE username LIKE 'a#%' ESCAPE '#';
A leading-wildcard LIKE '%xx' defeats the index and scans the whole table. For heavy substring search use FULLTEXT or a real search engine.

Friends & Partners