例如如何知道所有列是否仅包含空值
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 |
任何帮助将不胜感激。
答案 0 :(得分:5)
您计算不为NULL的列:
SELECT 0 = count(col1) AS col1_all_null,
0 = count(col2) AS col2_all_null,
...
FROM mytable;
这利用了聚合函数忽略NULL值的事实(至少,几乎所有的值)。
答案 1 :(得分:0)
为什么要让所有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;