Jam*_*ton 7 sql sql-server null count
所以我前几天遇到了一些事情,试图在运行导入后计算多少空值.
所以我做了:
select COUNT(columnname) from table
WHERE ColumnName is null
Run Code Online (Sandbox Code Playgroud)
哪个没有计算空值...
然后我做了,
select COUNT(*) from table
WHERE ColumnName is null
Run Code Online (Sandbox Code Playgroud)
这给了我数数.
所以,让我烦恼的是为什么这不计算空值.
我已经看过这个问题(以及围绕谷歌的一个很好的搜索......):
在SQL中,count(列)和count(*)之间有什么区别?虽然它告诉我COUNT(columnname)不计算空值,但我想知道为什么使用这种方法不计算空值?
非常感谢,詹姆斯.
COUNT 计数值,因为null不是一个不计算的值.
如果要计算所有空值,可以执行以下操作:
SELECT COUNT(ID) as NotNull, SUM(CASE WHEN ID IS NULL then 1 else 0 end) as NullCount
Run Code Online (Sandbox Code Playgroud)
为什么不计入空值COUNT(columnname)?
COUNT(*)
Run Code Online (Sandbox Code Playgroud)
将计算所有行
COUNT(columnname)
Run Code Online (Sandbox Code Playgroud)
将计算所有行,但列名为IS NULL的行除外.
那是什么原因?只是该COUNT()函数被设计为以这种方式工作:NULL值与其他值的处理方式不同,因为NULL可以被视为"未知"值的占位符,因此您只想计算具有实际值和跳过没有的行.
计算没有值的行不常见,SQL不为它提供函数.但你可以很容易地计算出来:
SELECT
COUNT(*) As rows,
COUNT(columnname) AS non_null_count,
COUNT(*) - COUNT(columnname) AS null_count
FROM
yourtable
Run Code Online (Sandbox Code Playgroud)