Count常见的有三种写法,count(*),count(expression),count(column_name)
Count(expression) ,count(column_name)计数的机制是:计算 expression,或表中column_name的值是否为NULL,如果为NULL则不计数,如果不是NULL则会计数。
count(*),返回表中行的数目。Specifies that all rows should be counted to return the total number of rows in a table,即使有null或duplicate value,也会计算在内。
如果Expression的值不是null,count(expression)和count(*)返回的结果是相同的。
示例代码
1,创建示例数据
create table dbo.test (id int) insert into dbo.test values(1),(2),(null)
2,测试 count(expression)
DECLARE @var int=null select count(@var) from dbo.test
返回的结果是0,原因是expression是null,count函数对null值不计数。
3,测试count(0),count(*)
select count(*) from dbo.test select count(0) from dbo.test
结果分析:count(*)计算表的行数,不排除null值或duplicate值。由于0是非null值,count(0)和count(*)执行结果是相同的。
4,测试count(column_name)
select count(id) from dbo.test
结果分析:从表中取出id值,如果为null,则不计数,如果不是null,则计数。
参照文档
http://www.cnblogs.com/CareySon/p/DifferenceBetweenCountStarAndCount1.html
https://technet.microsoft.com/en-us/library/ms175997.aspx
时间: 2024-10-08 12:18:43