根据 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