1. 程式人生 > >T-SQL 聚合函數Count與NULL

T-SQL 聚合函數Count與NULL

查詢 什麽 dbo sel into color 有一個 null eat

大家都知道聚合函數是做統計用的,而count函數是統計行數的,也就是滿足一定條件記錄的行數。

下面我們來看下這個count與NULL的微妙關系。

CREATE TABLE dbo.Student
(
 Sno int  null
,Name nvarchar(23) 
)
INSERT INTO dbo.Student(Sno,Name)VALUES(1,Jesse);
INSERT INTO dbo.Student(Sno,Name)VALUES(2,Jessca);
INSERT INTO dbo.Student(Sno,Name)VALUES(3,June);
INSERT INTO dbo.Student(Sno,Name)VALUES(
4,Supper); INSERT INTO dbo.Student(Sno,Name)VALUES(NULL,Mike);

SELECT * FROM dbo.Student

技術分享

我們向表student插入了5條記錄,其中一條的SNO為NULL。

通常的一種方法是用count(*)

SELECT COUNT(*) FROM dbo.Student
SELECT COUNT(Name) FROM dbo.Student
SELECT COUNT(Sno) FROM dbo.Student
SELECT COUNT(1) FROM dbo.Student

Result:

技術分享

大家會疑惑這種結果。為什麽count(1)會是5.下面我們來研究下下面的幾個查詢。

SELECT * FROM dbo.Student
SELECT Name FROM dbo.Student
SELECT Sno FROM dbo.Student
SELECT 1 FROM dbo.Student

  技術分享

select 1 是顯示結果和表中結果總行數行匹配的,不管是不是NULL。 但是SNO裏面有一個NULL,編譯器就識別這條記錄是無效的。

以上理解僅僅是個人體會,有可能不是太專業,或者有很多錯誤,還行大路大神多多指教。

T-SQL 聚合函數Count與NULL