我想计算单个表中多个列中NULL
的出现次数。我需要每列的计数,而不是整个表的总计数。我非常希望在单个查询中这样做,以避免来回的开销,简化我的应用程序端代码,并避免多次表扫描。
如何计算每个特定列为NULL
的行数?
COUNT
明确指出不是NULL
的内容,但我可以将NULL
转换为非NULL
,反之亦然COUNT
1}}做我想做的事:
SELECT COUNT(CASE WHEN my_column IS NULL THEN TRUE ELSE NULL END) FROM my_table;
但这真的非常难看,特别是因为我想在同一个查询中的多个列上执行此操作。
NULLIF
时, NULL
会返回NULL
,因此无效。
有更清洁的方式吗?
答案 0 :(得分:6)
试试这个:
SELECT COUNT(*)-COUNT(column1) As column1, COUNT(*)-COUNT(column2) As column2 FROM my_table;
也许这对你有用。如上所述,COUNT
只计算非空值,这应该为您提供所需的空值之和。