首页 > 解决方案 > 如何知道 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  

onlycol2是 NULL,所以结果应该是col2only。

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

任何帮助将不胜感激。

标签: sqlpostgresqlnull

解决方案


您计算不为 NULL 的列:

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

这利用了聚合函数忽略 NULL 值的事实(嗯,至少几乎全部)。


推荐阅读