Questo è un po 'complicato. Supponiamo che la tabella abbia solo una colonna, quindi Count (1) e Count (*) forniranno valori diversi.
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
Risultati della query
Come puoi vedere nell'immagine, il primo risultato mostra che la tabella ha 16 righe. di cui due righe sono NULL. Quindi quando usiamo Count (*) il motore di query conta il numero di righe, quindi abbiamo ottenuto il risultato del conteggio come 16. Ma in caso di Count (empid) ha contato i valori non NULL nella colonna empid . Quindi abbiamo ottenuto il risultato come 14.
quindi ogni volta che utilizziamo COUNT (colonna) assicurati di occuparci dei valori NULL come mostrato di seguito.
select COUNT(isnull(empid,1)) from @table1
conterà sia i valori NULL che Non-NULL.
Nota : la stessa cosa vale anche quando la tabella è composta da più di una colonna. Count (1) fornirà il numero totale di righe indipendentemente dai valori NULL / Non-NULL. Solo quando i valori delle colonne vengono contati utilizzando Count (Column), dobbiamo occuparci dei valori NULL.