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

Oracle SQL如何排除所有列均为空的行(保留值为0的行)

Oracle SQL 去重并排除全空行的实现

原查询语句

原SQL用于从my_table表中选取多列的去重数据:

SELECT DISTINCT
     name,
     age,
     weight,
     height
FROM
    my_table

需求说明

需要排除所有列均为空值的行,但值为0.00的行需保留;仅当该行所有列都为空时才进行排除(如示例中的d行,因存在非空列需保留)。

示例输入数据

nameageweightheight
a1020105
b000
c
d15110

预期输出数据

nameageweightheight
a1020105
b000
d15110

修改后的SQL语句

SELECT DISTINCT
     name,
     age,
     weight,
     height
FROM
    my_table
WHERE
    NOT (name IS NULL AND age IS NULL AND weight IS NULL AND height IS NULL);

逻辑说明

  • NOT (name IS NULL AND age IS NULL AND weight IS NULL AND height IS NULL) 直接排除所有列均为空的行,精准匹配需求;
  • 保留原有的DISTINCT关键字,确保结果去重;
  • 值为0的行不属于空值,会被正常保留;存在至少一个非空列的行(如d行)也会被保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 07:25:16