SQL Server计数(列)查询

SQL Server计数(列)查询,sql,sql-server,Sql,Sql Server,在sql server中,count(column)也会计算null列吗?我在考试中遇到了这个问题,我感到困惑,但最后我给出了答案,是计数(列)也将计数空列。我只是想知道我是对还是错。有人知道这个吗?是什么阻止了你自己检查它 CREATE TABLE Test (VALUE VARCHAR(10)); INSERT INTO TEST VALUES ('sdfsdf'), ('sdfgsdfg'),( NULL),( NULL); SELECT COUNT(VALUE) FROM Test

在sql server中,count(column)也会计算null列吗?我在考试中遇到了这个问题,我感到困惑,但最后我给出了答案,是计数(列)也将计数空列。我只是想知道我是对还是错。有人知道这个吗?

是什么阻止了你自己检查它

CREATE TABLE Test (VALUE VARCHAR(10));

INSERT INTO TEST VALUES ('sdfsdf'), ('sdfgsdfg'),( NULL),( NULL);

SELECT COUNT(VALUE) FROM Test
结果:

COUNT(VALUE)
2
所以答案是否定的
COUNT(ColumnName)
不计算具有
NULL
值的行

以下是

COUNT(*)返回组中的项目数。这包括空值和重复项

COUNT(ALL expression)为组中的每一行计算表达式并返回非空值的数目

COUNT(DISTINCT expression)为组中的每一行计算表达式,并返回唯一的非空值的数目


答案是这样的。可能是你尝试时发生的事情的重复吗?@Yosi不,那是错误的。但是假设你是对的。那么指定的列名就毫无意义了,因为行数不取决于列名。@snyder这取决于“空值”的含义,它不是一个标准术语。它可以合法地表示“空值”,其中“空字符串”不是“空值”。您的答案不完整(不正确)。那么
COUNT(*)
?@HamletHakobyan的问题是关于
COUNT(column)
,答案也是如此。实际上我的笔记本电脑中没有安装sql server。这就是为什么我不能检查的原因。无论如何,谢谢您的回答。@user2758530您可以随时使用类似的工具。好的,但这可能会引起混淆。我认为最好还包括文档中的
COUNT(expression)
意思是
COUNT(ALL expression)
。“全部:将聚合函数应用于所有值。全部为默认值。”我可以看到有人在读这篇文章并思考“但是COUNT(columnname)呢?”这不在您的列表中