数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

SQL Server的空值处理策略


发布日期:2021年08月31日
 
SQL Server的空值处理策略

数据完整性是任何数据库系统要保证的重点不管系统计划得有多好空数据值的问题总是存在本文探讨了在SQL Server中处理这些值时涉及的个问题计数使用空表值以及外键处理

用COUNT(*)处理空值

大多数集合函数都能在计算时消除空值COUNT函数则属于例外对包含空值的一个列使用COUNT函数空值会从计算中消除但假如COUNT函数使用一个星号它就计算所有行而不管是否存在空值

如果希望COUNT函数对给定列的所有行(包括空值)进行计数请使用ISNULL函数ISNULL函数会将空值替换成有效的值

事实上对集合函数来说如果空值可能导致错误结果ISNULL函数就非常有用记住在使用一个星号时COUNT函数会对所有行进行计算下例演示了空值在AVG和COUNT集合函数中的影响

SET NOCOUNT ON

GO

CREATE TABLE xCount

(pkey INT IDENTITY NOT NULL

CONSTRAINT pk_xCount PRIMARY KEY

Col int NULL)

GO

INSERT xCount (Col) VALUES ()

GO

INSERT xCount (Col) VALUES ()

GO

INSERT xCount (Col) VALUES ()

GO

INSERT xCount (Col) VALUES (NULL)

GO

SELECT AVG(Col) AvgWithoutIsNullFunctionOnCol

AVG(ISNULL(Col)) AvgWithIsNullFunctionOnCol

COUNT(Col) NoIsNullFunctionOnCol

COUNT(ISNULL(Col)) UsingIsNullFunctionOnCol

Count(*) UsingAsterisk

FROM xCount

GO

DROP TABLE xCount

GO

OUTPUT:

上一篇:两个SQL Server维护技巧

下一篇:自己编的SQL服务端加客户端