如何知道 a 列是否包含所有 NULL



例如,如何知道是否所有列都只包含空值

ID         | col1     | col2      |col3       | col4     
-----------+----------+-----------+-----------+-----------
 1         | Null     |Null       | with value| with value
 2         |with value|Null       | with value| with value
 3         |with value|Null       | Null      | Null    
 4         |with value|Null       | with value| with value
 5         |with value|Null       | Null      | Null  
 6         |Null      |Null       | Null      | Null    
 7         |with value|Null       | with value| with value
 8         |with value|Null       | Null      | Null  

只有col2为 NULL,因此结果应仅col2

ID         | col2     |
-----------+----------+
 1         |Null      |
 2         |Null      |
 3         |Null      |
 4         |Null      |
 5         |Null      |
 6         |Null      |
 7         |Null      |
 8         |Null      | 

任何帮助将不胜感激。

计算非 NULL 的列:

SELECT 0 = count(col1) AS col1_all_null,
       0 = count(col2) AS col2_all_null,
       ...
FROM mytable;

这利用了聚合函数忽略 NULL 值的事实(好吧,至少几乎所有值)。

为什么你想要所有NULL列的所有行? 你知道这些值是什么。

此外,SQL 查询只能返回一组固定的列,因此无法筛选列。 如果您只想要一个列名的列表,其所有值都NULL ,您可以将这些名称连接在一起:

select concat_ws(',',
                 (case when count(col1) = 0 then 'col1' end),
                 (case when count(col2) = 0 then 'col2' end),
                 (case when count(col3) = 0 then 'col3' end)
                )
from t;

相关内容

  • 没有找到相关文章

最新更新