我有5个字段带回了值和NULLS的混合。出于报告目的,我需要用值替换任何潜在的NULLS。我正在询问的数据库每晚都会通过SSIS包更新。
显然我需要改变.dtsx文件,通过添加一些SQL来阻止NULLS每天被带来。
我的问题是:
在性能方面处理这些NULLS的最有效方法是什么。到目前为止,我已经确定COALESCE
和CASE
来处理它们并且我倾向于COALESCE
,因为我对NULL
的替代方案不会改变,但我很想听到如果以及为什么这将是最有效的方法。
答案 0 :(得分:10)
COALESCE()
实际上是CASE
语句的简写,它们的表现相同。
然而,正如podiluska所提到的,ISNULL()
偶尔会比CASE
语句更快,但它可能会微不足道,因为这些函数不太可能阻碍你的程序。
http://sqlblog.com/blogs/adam_machanic/archive/2006/07/12/performance-isnull-vs-coalesce.aspx
答案 1 :(得分:7)
在某些情况下,ISNULL
比CASE
或COALESCE
快。但是,如果跨平台兼容性存在问题,则COALESCE
是ANSI标准。
答案 2 :(得分:4)
我更喜欢COALESCE
而不是CASE
。最有趣的是代码比使用CASE
短得多。