如何在SQL中使用LIKE操作符实现模糊查询?

来源:站长工具作者:梧桐头衔:草根站长
导读:本期聚焦于小伙伴创作的《如何在SQL中使用LIKE操作符实现模糊查询?》,敬请观看详情。模糊查询是数据库检索中的基础需求,LIKE操作符通过通配符匹配不完全确定的字符串。百分号代表任意长度字符序列,下划线仅匹配单个字符,方括号可指定字符范围。在用户搜索、日志过滤等场景中,合理使用LIKE能避免全表扫描带来的性能问题。需要注意通配符位置对索引命中率的影响,前置百分号往往导致索引失效。转义字符能处理包含特殊符号的查询内容,不同数据库对大小写敏感度的默认设置也存在差异。

在关系型数据库里,当我们无法确定字段的完整值时,就需要借助LIKE操作符完成模糊匹配。它允许在WHERE条件中按照特定模式搜索文本,是处理字符串查询最直观的手段之一。掌握通配符的含义与书写位置,是写出正确且高效SQL的前提。

如何在SQL中使用LIKE操作符实现模糊查询?

一、LIKE操作符的基本语法

LIKE操作符通常出现在SELECT语句的WHERE子句中,用来判断某列的值是否符合给定的模式。模式由普通字符和通配符共同组成,数据库引擎会逐行比对,返回满足条件的记录。最基本的写法是将列名、LIKE关键字与带引号的字符串模式放在一起。

下面的示例从用户表中找出所有姓张的人。其中百分号表示后面可以有任意字符,因此“张%”能够匹配张三、张无忌、张伟等任意以张开头的姓名。这种写法在日常查询中最为常见,也最容易理解。

SELECT id, name
FROM users
WHERE name LIKE '张%';

除了百分号,下划线通配符用来精确匹配单个字符。比如模式“张_”只能匹配姓张且名为一个字的人,像张三是符合的,但张小三就不符合。灵活组合这两种通配符,可以表达非常细致的匹配规则。

二、常用通配符与匹配规则

标准SQL定义了几种核心通配符,不同数据库在细节上略有扩展,但主体逻辑一致。理解它们的差异,能帮我们避免写出预期之外的结果。最典型的就是百分号与下划线的分工,以及如何使用方括号限定字符集合。

通配符含义示例
%匹配零个或多个任意字符LIKE 'a%' 匹配以a开头的所有串
_匹配恰好一个任意字符LIKE 'a_' 匹配ab、ac但不匹配a
[ ]匹配括号内任意一个字符(部分库支持)LIKE '[abc]%' 匹配a、b或c开头

在MySQL中,方括号语法并不直接支持,通常需要用正则表达式REGEXP替代;而在SQL Server里,方括号是原生支持的。如果模式里本身包含百分号或下划线,就要定义转义字符,告诉数据库哪个符号是普通字符。以下代码把反斜杠设为转义符,查出包含下划线的产品编码。

SELECT code
FROM products
WHERE code LIKE '%_%' ESCAPE '';

三、大小写敏感与性能注意点

LIKE匹配是否区分大小写,取决于数据库排序规则。例如MySQL的utf8_general_ci不区分大小写,而PostgreSQL默认区分。当业务要求忽略大小写搜索时,可以统一使用LOWER函数转换后再比较,但这样可能让索引失效,需要权衡。

性能方面,如果模糊模式以百分号开头,如“%值%”,大多数数据库的B+树索引都无法生效,只能全表扫描。数据量大时响应会明显变慢。此时可考虑全文索引或外部搜索引擎。下面演示用LOWER做不区分大小写查询的写法,同时说明其代价。

-- 不区分大小写查找邮箱包含example的用户的写法
SELECT id, email
FROM users
WHERE LOWER(email) LIKE '%ipipp.com%';
-- 注意:对列使用函数会导致该列索引不可用

如果模式是后半段模糊,如“值%”,则有可能命中最左前缀索引,查询效率较高。设计表结构和查询时,应尽量把确定前缀放在模式开头,把不确定部分放在末尾,从而兼顾灵活性与速度。

四、实际场景中的组合用法

模糊查询常和动态条件拼接一起出现。比如在后台搜索框中,用户输入关键词就拼成LIKE '%关键词%'。为防止空关键词导致全量返回,程序层要先判断再组装SQL,或者使用更安全的参数化查询,避免注入风险。

下面用存储过程风格展示一个带参数的模糊查询示例,通过传入姓名片段返回匹配用户。参数化不仅能防注入,也方便数据库缓存执行计划。实际项目中,建议结合ORM框架提供的模糊查询接口来减少手写拼接错误。

-- 假设使用预编译参数 :name_part
SELECT id, name, phone
FROM users
WHERE name LIKE CONCAT('%', :name_part, '%')
  AND status = 1;

在日志分析场景中,LIKE也能快速过滤异常行。比如找出所有含“timeout”的日志消息。虽然不如专业日志系统强大,但在小型系统排障时非常实用。掌握这些用法后,LIKE就能成为你操作数据库时顺手的基础工具。

SQLLIKE操作符模糊查询修改时间:2026-08-10 08:57:29

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。