正 文

使用COUNT(*)处理NULL值


www.7dspace.com  更新日期:2005-11-6 3:23:57  七度空间


大部分集合函数在进行计算时都去除NULL值,但COUNT函数是一个例外。一般情况下当对一个包含NULL值的列使用COUNT函数时,这个列中的NULL值将会被去除掉。但是如果COUNT函数使用一个星号,它就会计算所有的行,而不管其中是否包含NULL值。

如果你想使用COUNT函数计算包含NULL值的列的所有行,那么需要使用ISNULL函数。ISNULL函数能将一个NULL值以一个合法的值代替。

事实上,在有NULL值的情况下使用集合函数时,ISNULL函数是非常有用的。但记住当你使用星号时,COUNT函数将计算所有行。下面是一段示例代码,说明了NULL值对AVG和COUNT函数的影响:

SET NOCOUNT ON
GO
CREATE TABLE xCount
(pkey1 INT IDENTITY NOT NULL
    CONSTRAINT pk_xCount PRIMARY KEY,
Col1 int NULL)
GO
INSERT xCount (Col1) VALUES (10)
GO
INSERT xCount (Col1) VALUES (15)
GO
INSERT xCount (Col1) VALUES (20)
GO
INSERT xCount (Col1) VALUES (NULL)
GO
SELECT     AVG(Col1) AvgWithoutIsNullFunctionOnCol1,
    AVG(ISNULL(Col1,0)) AvgWithIsNullFunctionOnCol1,
    COUNT(Col1) NoIsNullFunctionOnCol1 ,
    COUNT(ISNULL(Col1,0)) UsingIsNullFunctionOnCol1,
    Count(*) UsingAsterisk
FROM xCount
GO
DROP TABLE xCount
GO
-- OUTPUT:
-- AvgWOIsNullFnctnCol1 AvgWIsNullFnctnCol1 WOIsNullFnctnCol1 WIsNullFnctnCol1 UsingAsterisk
-- -------------------- ------------------- -----------------
--                 15                                   11                         3                          4                             4


上一篇:Oracle 中的in-line view
下一篇:调节Oracle数据缓冲区参数,缓冲整个数据库
作者:  来源:开发者在线 ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐