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資料筆數。