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

Dbeaver与Athena数据库使用Where Not Like未完全排除符合条件行问题

问题原因

这是典型的逻辑运算符使用错误,符合布尔逻辑中的德摩根定律应用场景:

  • 你的需求是排除满足「territory_name包含RG 或 包含WS」的所有行
  • 等价于需要保留的行需要同时满足「territory_name不包含RG 且 不包含WS」

你目前写的OR逻辑会导致只要满足其中一个否定条件就会被保留,比如某行包含RG但不包含WS,会命中NOT lower(td.territory_name) like '%ws%'的条件,最终被留在结果集里,完全不符合你的过滤要求。

正确写法

把条件中的OR替换为AND即可:

where NOT Lower(td.territory_name) like '%rg%'  
AND NOT lower(td.territory_name)  like  '%ws%'

也可以换更直观的写法,先圈定要排除的范围再取反,两种写法逻辑完全等价,执行效率无差异:

where NOT (
  Lower(td.territory_name) like '%rg%'  
  OR lower(td.territory_name)  like  '%ws%'
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 18:24:03