T-SQL 聚合函數Count與NULL
阿新 • • 發佈:2017-07-08
查詢 什麽 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