我正在我的项目中创建一个完整的详细信息,但我在查询中遇到有关“COUNT”的问题。它还计算空值。我想要的是,使用除此之外的值来计算列,查询将不计算空列。
这是我的代码
SELECT COUNT(columnName) as TotalColumnValue FROM tblName
| columnName|
| value|
| |
| value|
| value|
因此结果计数为3而不是4,因为该值为空。
提前谢谢。
答案 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)
您需要同时排除NULL
和empty 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