Quelqu'un peut-il m'aider à comprendre quelque chose ? Lorsque je le peux, j'évite généralement les (*) dans une instruction SQL. Aujourd'hui, c'est la revanche. Voici un scénario :
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)
Je pourrais compter le nombre d'enregistrements où Name
es NULL
comme suit :
SELECT COUNT(*) FROM Tbl WHERE Name IS NULL
Tout en évitant le (*), j'ai découvert que les deux déclarations suivantes me donnaient deux résultats différents :
SELECT COUNT(Id) FROM Tbl WHERE Name IS NULL
SELECT COUNT(Name) FROM Tbl WHERE Name IS NULL
La première déclaration renvoie correctement 1 tandis que la seconde déclaration donne 0 . Why
ou How
?