【发布时间】:2012-09-10 22:10:11
【问题描述】:
根据 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
【问题讨论】:
标签: sql database sql-server-2008 tsql count