Coalesce vs Case

时间:2012-11-01 09:43:48

标签: sql sql-server-2008 tsql

我有5个字段带回了值和NULLS的混合。出于报告目的,我需要用值替换任何潜在的NULLS。我正在询问的数据库每晚都会通过SSIS包更新。

显然我需要改变.dtsx文件,通过添加一些SQL来阻止NULLS每天被带来。

我的问题是:

在性能方面处理这些NULLS的最有效方法是什么。到目前为止,我已经确定COALESCECASE来处理它们并且我倾向于COALESCE,因为我对NULL的替代方案不会改变,但我很想听到如果以及为什么这将是最有效的方法。

3 个答案:

答案 0 :(得分:10)

COALESCE()实际上是CASE语句的简写,它们的表现相同。

然而,正如podiluska所提到的,ISNULL()偶尔会比CASE语句更快,但它可能会微不足道,因为这些函数不太可能阻碍你的程序。

http://sqlblog.com/blogs/adam_machanic/archive/2006/07/12/performance-isnull-vs-coalesce.aspx

答案 1 :(得分:7)

在某些情况下,ISNULLCASECOALESCE快。但是,如果跨平台兼容性存在问题,则COALESCE是ANSI标准。

答案 2 :(得分:4)

我更喜欢COALESCE而不是CASE。最有趣的是代码比使用CASE短得多。