如何使用like模糊查询_mysql模糊匹配技巧

来源:这里教程网 时间:2026-02-28 20:43:08 作者:

MySQL 中的

LIKE
是最常用的模糊查询方式,核心在于正确使用通配符和注意性能陷阱。

LIKE 基础语法与通配符含义

LIKE
后跟一个模式字符串,支持两个关键通配符:

%:匹配任意长度的字符(包括零个字符),例如
'abc%'
匹配以
abc
开头的所有字符串
_:匹配单个任意字符,例如
'a_c'
匹配
abc
a2c
,但不匹配
ac
abcd

注意:默认区分大小写取决于字段的排序规则(collation),如需忽略大小写,可使用

LOWER()
或确保列使用
utf8mb4_general_ci
类型排序规则。

常用模糊匹配场景写法

根据搜索需求选择合适模式:

查包含某子串:
WHERE name LIKE '%keyword%'
查以某字符串开头:
WHERE name LIKE 'prefix%'
(推荐,可能走索引)
查以某字符串结尾:
WHERE name LIKE '%suffix'
(无法使用普通索引,慎用)
查固定长度+部分已知:
WHERE code LIKE 'A_202_'
(匹配如
A12024
A92021

若需匹配字面意义的

%
_
,用
ESCAPE
指定转义符,例如:
LIKE '100\%' ESCAPE '\'

提升 LIKE 查询性能的关键点

模糊查询容易拖慢数据库,尤其大数据量时:

前导通配符(如
'%abc'
'%abc%'
)会使 B+ 树索引失效,只能全表扫描
只有
'abc%'
这类左匹配才可能利用索引(前提是字段有索引且未在函数中使用)
考虑替代方案:对高频模糊检索字段,可建立全文索引(FULLTEXT)配合
MATCH ... AGAINST
,更适合自然语言搜索
数据量极大时,引入 Elasticsearch 或 RedisSearch 等专用检索引擎更高效

避免常见错误

实际写 SQL 时常踩这些坑:

忘记加引号导致语法错误:
WHERE name LIKE abc%
❌ 应为
WHERE name LIKE 'abc%'
LIKE
中误用变量拼接引发 SQL 注入(尤其 PHP/Java 拼接字符串时),务必使用预处理参数化查询
对 NULL 值使用
LIKE
返回 FALSE,需单独判断:
WHERE name IS NULL OR name LIKE '%x%'
中文模糊搜索时,确认字符集是
utf8mb4
,避免乱码或匹配失败

相关推荐