You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL LIKE运算符使用问题:搜索Roofing需返回含Roof的所有记录

问题场景

我有一个存储服务类别的数据库表service_categories,表结构及数据如下:

id       | created_at          | updated_at           | service_category
1        | 2022-10-03 08:32:47 | 2022-10-03 08:32:47  | Roofing
2        | 2022-10-03 08:32:47 | 2022-10-03 08:32:47  | Roof Repair
3        | 2022-10-03 08:32:47 | 2022-10-03 08:32:47  | Roof Replacement

当用户搜索“Roofing”时,希望返回上述三条记录,但尝试以下SQL语句后,仅能获取包含完整“Roofing”的第一条记录,无法返回含“Roof”的其他记录:

SELECT * FROM service_categories WHERE 1 AND service_category LIKE '%Roofing%';
SELECT * FROM service_categories WHERE 1 AND service_category LIKE 'Roofing%';
SELECT * FROM service_categories WHERE 1 AND service_category LIKE '%Roofing';
解决方案

方法1:匹配包含“Roof”的所有记录

将LIKE匹配的关键词从Roofing改为Roof,所有包含“Roof”字符串的记录都会被匹配到,刚好覆盖三条目标数据:

SELECT * FROM service_categories WHERE service_category LIKE '%Roof%';

方法2:匹配以“Roof”开头的记录

由于所有目标记录的service_category都以“Roof”开头,也可以使用前缀匹配,性能比全模糊匹配略优:

SELECT * FROM service_categories WHERE service_category LIKE 'Roof%';

说明

你之前的SQL都是基于完整的“Roofing”字符串匹配,而另外两条记录仅包含“Roof”前缀,不包含“Roofing”完整字符串,因此无法被匹配到。调整匹配关键词为“Roof”后,就能覆盖所有目标记录。

内容的提问来源于stack exchange,提问作者Yunus Aslam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 11:45:32