MySQL中LIKE模糊查询的使用方法与实战技巧

2026年04月13日/ 浏览 6

MySQL中LIKE模糊查询的使用方法与实战技巧

在日常开发过程中,数据库查询是每个后端工程师绕不开的核心技能。而在众多查询方式中,LIKE 操作符因其灵活的模糊匹配能力,成为处理文本搜索需求的重要工具。尤其在用户输入关键词进行内容检索时,如文章标题、商品名称或用户昵称的查找,LIKE 能够快速实现“包含某字符”的筛选逻辑。本文将带你深入理解 MySQL 中 LIKE 的语法结构、通配符用法以及性能优化策略,帮助你在实际项目中更高效地运用这一功能。

LIKE 是 MySQL 提供的一种用于模式匹配的操作符,通常配合 SELECTUPDATEDELETE 语句使用。其基本语法如下:

sql
SELECT column_name FROM table_name WHERE column_name LIKE pattern;

其中,pattern 是我们定义的匹配模式,支持两种主要的通配符:百分号 % 和下划线 _% 表示任意数量(包括零个)的字符,而 _ 则代表一个且仅一个字符。例如,要查找所有以“编程”开头的文章标题,可以这样写:

sql
SELECT * FROM articles WHERE title LIKE '编程%';

这条语句会返回标题为“编程入门指南”、“编程思维解析”等记录。如果你希望查找标题中包含“MySQL”的文章,无论它出现在哪个位置,可以使用:

sql
SELECT * FROM articles WHERE title LIKE '%MySQL%';

这里的前后双 % 意味着“MySQL”前后可以有任意字符,实现了真正的“模糊包含”查询。这种写法在搜索引擎类功能中非常常见。

再来看 _ 的应用场景。假设有一个用户表,用户名格式为“user01”、“user02”……一直到“user99”,你想找出所有两位数字结尾的用户名,就可以这样写:

sql
SELECT username FROM users WHERE username LIKE 'user__';

这里两个下划线分别匹配十位和个位上的数字,确保只选出长度固定为6位且前缀为“user”的记录。

值得注意的是,LIKE 查询默认是不区分大小写的,这得益于 MySQL 默认的字符排序规则(如 utf8mb4_general_ci 中的 ci 即 case insensitive)。如果你需要进行大小写敏感的匹配,可以在模式前加上 BINARY 关键字:

sql
SELECT * FROM products WHERE name LIKE BINARY '%iPhone%';

这样只有当字段值中确实包含大写的“I”和小写的“Phone”时才会匹配成功。

虽然 LIKE 功能强大,但在大数据量场景下也存在性能隐患。特别是以 % 开头的查询(如 LIKE '%keyword'),会导致索引失效,MySQL 必须进行全表扫描,严重影响查询效率。因此,在设计数据库时应尽量避免此类前导通配符的使用。如果业务必须支持前后模糊搜索,可考虑结合全文索引(FULLTEXT)或引入 Elasticsearch 等专业搜索引擎。

此外,当需要转义特殊字符时,比如查找包含下划线 _ 的真实数据(而非作为通配符),可以使用 ESCAPE 子句指定转义符:

sql
SELECT * FROM files WHERE filename LIKE 'report\_2023%' ESCAPE '\';

此处反斜杠 \ 被定义为转义符,使得 _ 不再具有通配含义,而是表示字面意义的下划线。

综上所述,LIKE 是 MySQL 中实现模糊查询的基础且实用的工具。掌握其通配符规则、了解大小写行为、规避性能陷阱,是每一位开发者应当具备的基本功。合理使用 LIKE,不仅能提升查询灵活性,也能让应用程序的搜索功能更加贴近用户真实需求。

picture loss