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

如何在SQL中用LIKE同时匹配两个值(避免OR误匹配)

解决指定列同时匹配多个关键词的SQL查询问题

嘿,我完全懂你遇到的困扰——用OR的话总会把只匹配单个关键词的行(比如你提到的ID为5的行)也捞出来,这显然不是你想要的结果。要实现同一列同时包含多个关键词的查询效果,其实有几种简单靠谱的方法:

方法一:多个LIKE搭配AND(最通用)

这是兼容性最好的方案,几乎所有数据库都支持。核心思路是用多个LIKE分别检查每个关键词的存在,再用AND确保所有条件同时满足。

举个例子,假设你的表叫your_table,要查询的列是target_column,需要同时包含"this"和"that":

SELECT * FROM your_table
WHERE target_column LIKE '%this%'
AND target_column LIKE '%that%';

这样写的话,只有当target_column里同时存在"this"和"that"两个关键词时,该行才会被返回,完美避开只匹配单个关键词的行。

方法二:正则表达式(适合复杂匹配)

如果你的数据库支持正则表达式(比如MySQL、PostgreSQL、SQL Server 2016+等),可以用正则来简化写法:

MySQL/MariaDB 示例

SELECT * FROM your_table
WHERE target_column REGEXP '(?=.*this)(?=.*that)';

这个正则用正向预查,确保字符串里同时包含"this"和"that",顺序不影响。

PostgreSQL 示例

PostgreSQL的正则语法略有不同,需要用~操作符:

SELECT * FROM your_table
WHERE target_column ~ '(?=.*this)(?=.*that)';

如果需要忽略大小写,可以用~*代替~。

为什么OR会出问题?

简单说,OR是逻辑或,只要满足任意一个条件就会返回结果。比如ID为5的行如果只包含"this",那它会匹配LIKE '%this%',自然会被OR语句选中。而AND是逻辑与,必须所有条件都满足才会返回,刚好命中你要的“同时包含多个关键词”的需求。

内容的提问来源于stack exchange,提问作者A. Pecora

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:04:38