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

MySQL如何在多列中使用通配符匹配指定字符串实现模糊查询

问题原因

IN 运算符仅支持精确值匹配,本身不识别 % 通配符,你尝试的写法本质是判断三个字段的值是否有完全等于字符串 %Alex% 的,自然无法返回符合模糊匹配要求的结果。

解决方案

方案1:多条件OR拼接(全数据库兼容)

直接为每个需要匹配的字段单独写 LIKE 条件,用OR关联即可,兼容所有主流SQL数据库:

SELECT * FROM `teachers`
WHERE
  teacherfname LIKE '%Alex%'
  OR teacherlname LIKE '%Alex%'
  OR salary LIKE '%Alex%';

注:salary为数值类型,执行LIKE匹配时会自动转为字符串处理,不影响匹配结果。

方案2:字段拼接后匹配(适合MySQL场景)

如果使用的是MySQL数据库,可以用 CONCAT_WS 函数把三个字段拼接后统一匹配,写法更简洁,列数较多时优势更明显:

SELECT * FROM `teachers`
WHERE CONCAT_WS('|', teacherfname, teacherlname, salary) LIKE '%Alex%';

注:拼接时加入自定义分隔符|是为了避免相邻字段内容拼接后意外命中搜索词,出现误匹配的问题。

性能提示

这种前后都加%的全模糊匹配无法用到普通B-tree索引,数据量较大时查询性能会比较差,如果有高频这类查询需求,建议建立全文索引优化。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:54:08