SQL COUNT(列)也计算错误的空值

时间:2016-04-06 06:06:58

标签: c# sql sql-server

我正在我的项目中创建一个完整的详细信息,但我在查询中遇到有关“COUNT”的问题。它还计算空值。我想要的是,使用除此之外的值来计算列,查询将不计算空列。

这是我的代码

SELECT COUNT(columnName) as TotalColumnValue FROM tblName

| columnName| 
|      value|
|           |
|      value|
|      value|

因此结果计数为3而不是4,因为该值为空。

提前谢谢。

5 个答案:

答案 0 :(得分:4)

如果值真的是NULL,那么COUNT应排除该行。也许它不是NULL而是空字符串''。尝试在列中添加NULLIF

CREATE TABLE tbl(columnName VARCHAR(10) NULL);
INSERT INTO tbl VALUES ('value'), ('value'), ('value'), ('');

SELECT COUNT(NULLIF(columnName, '')) FROM tbl;

或者您可以过滤空字符串:

SELECT COUNT(columnName) FROM tbl WHERE columnNameIS NOT NULL AND columnName <> ''

答案 1 :(得分:4)

实际上,由于count(columnName)不会计算空值,因此不需要在所有答案中提到的IS NOT NULL条件。所以基本上它足以过滤空字符串值,只需指定计数中的列。

SELECT COUNT(columnName) as TotalColumnValue
FROM tblNam
WHERE columnName <> ''

注意 - &gt;关于你在评论中提出的问题。 <>表示!=或单词 - NOT EQUAL

答案 2 :(得分:2)

添加功能解决您的问题。 :)

SELECT COUNT(columnName) as TotalColumnValue FROM tblName where columnName is not null

答案 3 :(得分:2)

您需要同时排除NULLempty string ''

SELECT COUNT(columnName) as TotalColumnValue FROM tblName
WHERE columnName <> '';

答案 4 :(得分:2)

如果要使用不同值的数量(不计算重复值) SELECT DISTINCT COUNT(columnName) AS TotalColumnValue FROM tblName WHERE columnName IS NOT NULL