LIKE是SQL中基于%和_通配符的轻量模糊查询手段,支持前缀匹配走索引,但不支持正则特性;需用ESCAPE转义特殊字符,大小写敏感性由排序规则决定。

SQL 中的 LIKE 是实现模糊查询最常用、最基础的手段,核心在于用通配符配合字符串模式匹配。它不依赖全文索引或正则引擎,轻量高效,适用于大多数简单到中等复杂度的文本筛选场景。
% 表示任意长度(含零长度)的任意字符序列;_ 表示单个任意字符。这是所有 LIKE 匹配的基石,其他写法都基于它们组合。
name LIKE '张%':匹配“张三”“张小明”“张”,但不匹配“李张”code LIKE 'A_B%':匹配“A1B001”“AxB22”,但不匹配“AB123”(中间缺一个字符)或“A12B33”(_ 只占一位)desc LIKE '%error%warning%':可跨位置匹配,只要 “error” 出现在 “warning” 前面且两者都在该字段中(注意:不是正则中的顺序断言,仅靠 % 连接)当要查的字段本身含 % 或 _(比如产品编号为 A%2023、路径为 data_2024),直接写 LIKE 'A%2023' 会被当成通配模式,必须显式声明转义符。
code LIKE 'A\%2023' ESCAPE '\'
LIKE 'A!_2023' ESCAPE '!',此时 ! 后的 _ 不再是通配符,而是字面量下划线LIKE 是否区分大小写,不由关键字决定,而由字段所用的排序规则控制。例如:
VARCHAR(50) COLLATE utf8mb4_0900_as_cs → 区分大小写,“ABC” 不匹配 “abc”Latin1_General_CI_AS → CI 表示 Case-Insensitive,即不区分UPPER(name) LIKE UPPER('zhang%'),但会丢失索引优势只有当模式不以 % 或 _ 开头时(即前缀匹配),数据库才可能利用 B-Tree 索引加速查询。
WHERE phone LIKE '138%' → 可走索引WHERE name LIKE '%ing' 或 LIKE '%john%' → 索引失效(除非使用倒排索引、全文索引或函数索引)REVERSE(name) 建索引,再查 REVERSE(name) LIKE REVERSE('%ing') → 实际查 'gni%'
掌握 LIKE 的行为边界比死记语法更重要——它不是正则,不支持重复、分组或逻辑或;它快在简单,也受限于简单。真有复杂文本分析需求,该上全文检索就别硬扛。
以上就是SQL模糊查询如何实现_LIKE匹配规则全面解析【指导】的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号