Ja, der Rückgabewert der "count" -Funktion selbst ist immer eine ganze Zahl ungleich Null, ohne Ausnahme.
auch sagen, dass Sie in dem Rückgabewert Ihrer Abfrage, das ist eigentlich ein Ergebnis gesetzt mehr interessiert sein könnten. Wenn dies der Fall ist, müssen Sie lediglich überlegen, ob Ihre Abfrage eine Klausel "Gruppierung nach" enthält.
A nicht gruppierten Abfrage mit Aggregatfunktionen wie
select count(*), sum(*), max(*), min(*) from table
erzeugt ein Ergebnis mit einem einzelnen Datensatz den Rückgabewert (e) der Aggregatfunktion (en) enthält. In diesem Fall enthält Ihre Ergebnismenge immer genau einen Datensatz mit Spalten, die die Rückgabewerte der von Ihnen eingeschlossenen Aggregatfunktionen enthalten. Innerhalb dieses einsamen Datensatzes ist der Rückgabewert von count immer eine Nicht-Null-Ganzzahl, während die Rückgabewerte der anderen Aggregatfunktionen wie min, max und sum null sein können. Im obigen Beispiel kann der zurückgegebene Datensatz "null, null, null, null" sein, wird aber niemals "null, null, null, null" sein, da count nie null zurückgibt. Wenn Sie also nur "count" aufrufen, enthält diese eine Spalte in diesem zurückgegebenen Datensatz immer den Nicht-Null-Rückgabewert von count; Daher können Sie sicher sein, dass der skalare Rückgabewert Ihrer Zählungsabfrage immer eine ganze Zahl ungleich null ist.
Auf der anderen Seite, eine gruppierte Abfrage mit Aggregatfunktionen wie
select count(*), sum(*), max(*), min(*) from table group by column
erzeugt ein Ergebnis mit null oder mehr Rekorde wo jeder Datensatz den Rückgabewert der Aggregatfunktion enthält (s) für jede identifizierte Gruppe. In diesem Fall, wenn keine Gruppen identifiziert sind, gibt es keine Gruppen für die Aggregatfunktionen, die ausgeführt werden, die Funktionen werden niemals ausgeführt und der "Abfrage-Rückgabewert" ist ein leerer Satz ohne Datensätze.
es Testen auf einem Tisch ohne Datensätze die Ergebnisse zu sehen:
create table #t (c int);
select COUNT(c), MIN(c), MAX(c), SUM(c) from #t; --returns one record {0, null, null, null}
select COUNT(c), MIN(c), MAX(c), SUM(c) from #t group by c; --returns no records
drop table #t;
Egal, ob Sie Zählung anrufen, min, max, oder die Summe, ist es wichtig, nicht nur die Rückgabewerte verstehen von einzelnen Aggregatfunktionen, aber auch der "Rückgabewert" der Abfrage selbst, und was diese Ergebnismenge enthält.
Ist es zu schwer zu testen? –
@col ja :) ',' –
@col durch nicht versuchen und nur es hier, ich denke er will Zuschauer "Click Upvote" auf seine Fragen. – raj