sql - TSQL Count 函数和不同的缺失 NULL 值

标签 sql database sql-server-2008 tsql count

根据 MSDN,TSQL COUNT(*) 函数在结果中包含任何 NULL 值,除非还使用了 DISTINCT(来源:http://msdn.microsoft.com/en-us/library/ms175997.aspx)

但是,在我的查询中,NULL 值被忽略了。为了对此进行测试,我创建了一个小表并在其中填充了一些数据:

CREATE TABLE tbl (colA varchar(1), colB varchar(10))
INSERT tbl VALUES
('Y', 'test1'),
('Y', 'test2'),
(null, 'test3'),
(null, 'test4'),
('N', 'test5')

然后我对其运行了以下 2 个查询:

SELECT count(*) FROM tbl
WHERE colA <> 'N'

SELECT DISTINCT colA FROM tbl
WHERE colA <> 'N'

两个结果都忽略 NULL 值。我分别得到 2 和 'Y' 作为结果。我不知道为什么会这样。有人可以告诉我吗?

在 SQL Fiddle 中模拟的结果:http://sqlfiddle.com/#!3/8f00b/9

最佳答案

空值很奇怪。

null <> 'N'评估为 false .
null = 'N'也评估为 false .

您需要显式处理 null:

SELECT count(*) FROM tbl
WHERE (colA <> 'N') or (colA is null)

关于sql - TSQL Count 函数和不同的缺失 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12360143/

相关文章:

mysql - hive中如何计算累计工资

sql - 仅当字段具有特殊值时才设置某些字段 'NOT NULL'

c# - 为什么我的应用程序如此等待同步?

c# - 用于简单 .NET 应用程序的 ORM

mysql - 如果字段不存在,则向该字段添加值

mysql - Ubuntu : SQL time is not the same as current OS timezone

python - Django:将博客条目查看次数加一。这有效率吗?

php - 更复杂的 ORDER BY(首先是字母,然后将数字视为整数)

sql - SQL Server 和 Excel 中的不同计算

mysql - 数据库sql内容上的多个图像