Может ли кто-нибудь помочь мне понять что-то? Когда я могу, я обычно избегаю (*) в операторе 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
?