Das ist etwas knifflig. Angenommen, die Tabelle hat nur eine Spalte, dann ergeben Count (1) und Count (*) unterschiedliche Werte.
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
Abfrageergebnisse
Wie Sie im Bild sehen können, zeigt das erste Ergebnis, dass die Tabelle 16 Zeilen enthält. von denen zwei Zeilen NULL sind. Wenn wir also Count (*) verwenden, zählt die Abfrage-Engine die Anzahl der Zeilen. Wir haben also das Count-Ergebnis als 16. Bei Count (empid) wurden jedoch die Nicht-NULL-Werte in der Spalte empid gezählt . Also haben wir das Ergebnis als 14 erhalten.
Wenn wir also COUNT (Spalte) verwenden, achten Sie darauf, dass die NULL-Werte wie unten gezeigt berücksichtigt werden.
select COUNT(isnull(empid,1)) from @table1
zählt sowohl NULL- als auch Nicht-NULL-Werte.
Hinweis : Dasselbe gilt auch dann, wenn die Tabelle aus mehr als einer Spalte besteht. Count (1) gibt die Gesamtzahl der Zeilen unabhängig von den NULL- / Nicht-NULL-Werten an. Nur wenn die Spaltenwerte mit Count (Column) gezählt werden, müssen wir uns um NULL-Werte kümmern.