[SQL Server]count function小提醒

Count function 很常使用的視窗函數,也很容易用錯

昨天檢查很久以前一個系統的store procedure,裡面有一段簡單判斷訂單筆數語法,但以前同事說最近訂單筆數都不正確,我查看後才發現原來是當時自己寫錯了,下面模擬一下(我當時用count(1))。

 

declare @myorder table

(

c1 varchar,

c2 varchar(10)

)

 

insert into @myorder values(null,null)

insert into @myorder values(null,null)

insert into @myorder values('1','aa')

insert into @myorder values('1','bb')

insert into @myorder values('2','cc')

insert into @myorder values('3','dd')

 

select COUNT(*) from @myorder --包含null

select COUNT(c1) from @myorder--不包含null

select COUNT(distinct c1) from @myorder--移除c1重複 defautl:all

select COUNT(1) from @myorder--等同 count(*)

可以看到 count(*)、count(1) 會包含null資料筆數。