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

为何SQL中OR条件失效而AND条件正常?非元音结尾城市查询问题

为什么OR条件不对,AND条件才正确?

核心原因是逻辑运算符的规则差异,我们先明确需求:要筛选出不以A/E/I/O/U中任何一个元音结尾的城市,且去重。

先看OR条件的查询逻辑

SELECT DISTINCT CITY FROM STATION WHERE (CITY NOT LIKE'%A' OR CITY NOT LIKE'%E' OR
                                        CITY NOT LIKE'%I' OR CITY NOT LIKE'%O' OR
                                        CITY NOT LIKE'%U');

OR的逻辑是「只要满足其中一个条件就会被选中」。举个例子:

  • 如果有个城市叫New York(以k结尾,符合需求),它会被选中,没问题;
  • 但如果有个城市叫Atlanta(以A结尾,应该被排除),它虽然不满足NOT LIKE '%A',但它满足NOT LIKE '%E',所以OR条件会把它也选进来——这就不符合我们要排除所有元音结尾城市的需求了。

换句话说,OR条件下,只要城市不是同时以所有元音结尾(这根本不可能),都会被选中,最终结果会包含所有城市,完全达不到筛选目的。

再看AND条件的查询逻辑

SELECT DISTINCT CITY FROM STATION WHERE (CITY NOT LIKE'%A' AND CITY NOT LIKE'%E' AND
                                        CITY NOT LIKE'%I' AND CITY NOT LIKE'%O' AND
                                        CITY NOT LIKE'%U');

AND的逻辑是「必须同时满足所有条件才会被选中」。这就要求城市:

  • 不以A结尾,并且不以E结尾,并且不以I/O/U结尾——也就是城市的最后一个字母完全不在元音列表里,正好符合我们的需求。

总结

要排除「属于某一类中的任意一个」的情况,必须用AND来组合多个NOT LIKE条件;如果用OR,逻辑就变成了「只要不属于某一类中的某一个就保留」,完全偏离了筛选目标。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:55:16