Oracle SQL技术咨询:如何排除A、B列均为NULL的数据行
解决Oracle SQL排除双NULL行的问题
我懂你的困扰!你想要的是只排除A和B两列同时为NULL的行,剩下的只要至少有一列有值的都保留,但之前用AND的条件太苛刻,只留下了两列都非空的记录。咱们调整一下条件逻辑就搞定了。
两种可行的写法
方法一:使用OR逻辑(直观易懂)
SELECT * FROM Table WHERE (A IS NOT NULL) OR (B IS NOT NULL);
这个语句的逻辑很直白:只要A列不为空 或者 B列不为空,这条数据就会被选中,完美跳过A、B全为NULL的行。
方法二:取反双NULL条件(逻辑严谨)
如果你更喜欢直接针对“要排除的情况”写条件,可以用NOT取反:
SELECT * FROM Table WHERE NOT (A IS NULL AND B IS NULL);
这句话就是明确告诉Oracle:排除掉那些A和B同时为NULL的行,剩下的都保留,效果和方法一完全一致。
验证你的示例数据
用这两个语句查询你给出的表数据:
- 行1(A=null, B=1):B非空 → 保留
- 行2(A=null, B=null):双NULL → 排除
- 行3(A=1, B=null):A非空 → 保留
- 行4(A=1, B=1):两列都非空 → 保留
刚好符合你想要的结果~
内容的提问来源于stack exchange,提问作者Kuro
相关产品推荐
相关产品推荐

