我有 5 个字段返回值和 NULLS 的混合。出于报告目的,我需要用一个值替换任何潜在的 NULLS。我正在查询的数据库每晚通过 SSIS 包更新。
显然,我需要更改 .dtsx 文件,以通过添加一些 SQL 来阻止每天引入 NULLS。
我的问题是:
就性能而言,处理这些 NULL 的最有效方法是什么。到目前为止,我已经确定COALESCE
并CASE
处理它们并且我倾向于COALESCE
因为我的替代方案NULL
不会改变,但我很想知道这是否以及为什么这将是最有效的方法。
我有 5 个字段返回值和 NULLS 的混合。出于报告目的,我需要用一个值替换任何潜在的 NULLS。我正在查询的数据库每晚通过 SSIS 包更新。
显然,我需要更改 .dtsx 文件,以通过添加一些 SQL 来阻止每天引入 NULLS。
我的问题是:
就性能而言,处理这些 NULL 的最有效方法是什么。到目前为止,我已经确定COALESCE
并CASE
处理它们并且我倾向于COALESCE
因为我的替代方案NULL
不会改变,但我很想知道这是否以及为什么这将是最有效的方法。
COALESCE()
字面上是CASE
语句的简写,它们的执行方式相同。
但是,正如 podiluska 所提到的,ISNULL()
有时可能比CASE
语句更快,但它可能是微不足道的增加,因为这些功能不太可能成为您的程序的瓶颈。
在此处阅读有关性能差异的更多信息。
在某些情况下,ISNULL
比CASE
或更快COALESCE
。但是,如果跨平台兼容性是个问题,那COALESCE
就是 ANSI 标准。
我更喜欢使用COALESCE
over CASE
。最有趣的是代码比使用短得多CASE
。