![](/img/trans.png)
[英]How to count the number of fields in a database column? (excluding NULLS, not counting them)
[英]Counting the number of NULLs in a SQL Server Column
我有两个这样的查询:
SELECT MyId, MyColumn FROM MyTable WHERE MyColumn IS NULL;
SELECT count(MyColumn) as MyCount FROM MyTable WHERE MyColumn IS NULL;
我得到的结果是:
MyId MyColumn
10 NULL
为什么第二个查询中的计数总是 0?
COUNT()
function 忽略NULL
值,因此第二个查询中的计数将始终为零。 要么算点别的:
SELECT COUNT(*) AS MyCount
FROM MyTable
WHERE MyColumn IS NULL;
或者使用CASE
表达式计算整个表以显式计算NULL
值:
SELECT COUNT(CASE WHEN MyColumn IS NULL THEN 1 END) AS MyCount
FROM MyTable;
计数不计算 null。 你需要做这样的事情,将 null 转换为 1,然后将它们相加:
SELECT SUM(CASE WHEN MyColumn IS NULL THEN 1 ELSE 0 END) AS count_nulls
FROM MyTable;
您可以简单地在计数 function 中使用 count(1) 而不是列名,因为它忽略了计数的 null 值。
SELECT COUNT(1) AS MyCount
FROM MyTable
WHERE MyColumn IS NULL;
如前所述, COUNT(SomeValue)
仅计算非空值的数量,因此您实际上需要COUNT(*)
。
但另一种方法是从总数中减去非空值
SELECT COUNT(*) - COUNT(MyColumn) AS MyCount
FROM MyTable;
不过, WHERE
可能更快,特别是如果您对该列有索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.