如何编写同时包含AND与OR逻辑的WHERE LIKE条件查询语句
SQL多条件匹配查询实现方案
核心逻辑
你需要的查询规则为两个条件同时生效:
- 字段必须匹配必填字符串
[REQUIRED STRING] - 字段至少匹配任意一个可选字符串
为避免SQL逻辑运算优先级(AND优先级高于OR)导致的结果异常,所有可选匹配条件需要用括号包裹为一个条件组,再和必填条件用AND关联。
具体写法
精确匹配场景(字段值完全等于目标字符串)
可选值数量少时直接用OR拼接:
SELECT column FROM table WHERE column = '[REQUIRED STRING]' AND ( column = 'POSSIBLE STRING_A' OR column = 'POSSIBLE STRING_B' OR column = 'POSSIBLE STRING_X' )
可选值数量多时用IN简化写法:
SELECT column FROM table WHERE column = '[REQUIRED STRING]' AND column IN ('POSSIBLE STRING_A', 'POSSIBLE STRING_B', 'POSSIBLE STRING_X')
模糊匹配场景(用LIKE匹配包含/前缀/后缀规则)
以匹配任意位置包含目标字符串为例(通配符%可根据你的匹配规则调整位置):
SELECT column FROM table WHERE column LIKE '%[REQUIRED STRING]%' AND ( column LIKE '%POSSIBLE STRING_A%' OR column LIKE '%POSSIBLE STRING_B%' OR column LIKE '%POSSIBLE STRING_X%' )
常见问题排查
之前查询结果不符合预期,基本是以下两个问题导致:
- 未用
AND关联必填条件和可选条件组,逻辑变成只要满足必填或任意可选就返回,过滤规则失效 - 未给可选
OR条件加括号,SQL会优先计算相邻的AND条件,导致只有第一个可选字符串的匹配规则生效
内容的提问来源于stack exchange,提问作者Jeremy C
相关产品推荐
相关产品推荐

