To trochę trudne. Załóżmy, że tabela ma tylko jedną kolumnę, wtedy Count (1) i Count (*) dadzą różne wartości.
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
Wyniki zapytania
Jak widać na obrazku, pierwszy wynik pokazuje, że tabela ma 16 wierszy. z czego dwa wiersze mają wartość NULL. Więc kiedy używamy Count (*), silnik zapytań liczy liczbę wierszy, więc otrzymaliśmy wynik zliczania jako 16. Ale w przypadku Count (empid) policzył wartości inne niż NULL w kolumnie empid . Otrzymaliśmy więc wynik 14.
więc ilekroć używamy COUNT (kolumna), upewnij się, że dbamy o wartości NULL, jak pokazano poniżej.
select COUNT(isnull(empid,1)) from @table1
policzy wartości NULL i Non-NULL.
Uwaga : to samo dotyczy sytuacji, gdy tabela składa się z więcej niż jednej kolumny. Count (1) da całkowitą liczbę wierszy niezależnie od wartości NULL / Non-NULL. Dopiero gdy wartości kolumn są policzone przy użyciu Count (Column), musimy zadbać o wartości NULL.