【发布时间】:2011-11-16 07:41:20
【问题描述】:
有人可以帮我理解一些事情吗?如果可以,我通常会在 SQL 语句中避免使用 (*)。好吧,今天是回报。这是一个场景:
CREATE TABLE Tbl (Id INT IDENTITY(1, 1) PRIMARY KEY, Name NVARCHAR(16))
INSERT INTO Tbl VALUES (N'John')
INSERT INTO Tbl VALUES (N'Brett')
INSERT INTO Tbl VALUES (NULL)
我可以计算Name 是NULL 的记录数如下:
SELECT COUNT(*) FROM Tbl WHERE Name IS NULL
在避免使用 (*) 的同时,我发现以下两个语句给了我两个不同的结果:
SELECT COUNT(Id) FROM Tbl WHERE Name IS NULL
SELECT COUNT(Name) FROM Tbl WHERE Name IS NULL
第一个语句正确返回 1,而第二个语句返回 0。 Why 或 How?
【问题讨论】:
-
你应该避免在
select *中使用*,但你不应该在count(*)中避免*。
标签: sql sql-server tsql count