在过去,我见过使用诸如
SELECT ISNULL(NULLIF(Field1, ''), 'NewValue')
简洁地获得一个后备值。
然而,自从 CASE 在 TSQL 中出现以来,我们更喜欢类似的东西
SELECT CASE Field1 WHEN '' THEN 'NewValue' ELSE Field1 END
一个会比另一个表现更好吗?还有什么其他原因会选择其中一个?
在过去,我见过使用诸如
SELECT ISNULL(NULLIF(Field1, ''), 'NewValue')
简洁地获得一个后备值。
然而,自从 CASE 在 TSQL 中出现以来,我们更喜欢类似的东西
SELECT CASE Field1 WHEN '' THEN 'NewValue' ELSE Field1 END
一个会比另一个表现更好吗?还有什么其他原因会选择其中一个?
您的示例之间的主要区别在于后者不会替换
NULL
为您的默认值。关于性能,您通常需要非常努力地找到可测量的差异(在数百万行中大约几秒钟)。搜索 isnull、coalesce 和 case 的性能度量——您会发现很多关于它们的博客文章。
我听到的普遍声音是,您应该使用对您的团队来说最易读的结构,并且任何时候您觉得它可能没有达到应有的性能,请对其进行测试。双向运行,比较完成时间,比较执行计划。