C'est peu compliqué. Supposons que la table ne comporte qu'une seule colonne, puis le nombre (1) et le nombre (*) donneront des valeurs différentes.
set nocount on
declare @table1 table (empid int)
insert @table1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(NULL),(11),(12),(NULL),(13),(14);
select * from @table1
select COUNT(1) as "COUNT(1)" from @table1
select COUNT(empid) "Count(empid)" from @table1
Résultats de la requête
Comme vous pouvez le voir sur l'image, le premier résultat montre que le tableau comporte 16 lignes. dont deux lignes sont NULL. Ainsi, lorsque nous utilisons Count (*), le moteur de requête compte le nombre de lignes, donc nous avons obtenu le résultat de count comme 16. Mais dans le cas de Count (empid), il a compté les valeurs non NULL dans la colonne empid . Nous avons donc obtenu le résultat 14.
donc chaque fois que nous utilisons COUNT (Colonne), assurez-vous que nous prenons soin des valeurs NULL comme indiqué ci-dessous.
select COUNT(isnull(empid,1)) from @table1
comptera les valeurs NULL et Non-NULL.
Remarque : la même chose s'applique même lorsque le tableau est composé de plus d'une colonne. Count (1) donnera le nombre total de lignes indépendamment des valeurs NULL / Non-NULL. Ce n'est que lorsque les valeurs de colonne sont comptées à l'aide de Count (Column) que nous devons prendre soin des valeurs NULL.