使用或不使用 ISNULL(NULLIF(Field1, ''))?

GaT*_*mas 4 sql-server t-sql

在过去,我见过使用诸如

SELECT ISNULL(NULLIF(Field1, ''), 'NewValue')

简洁地获得回退值。

然而,自从 TSQL 中出现 CASE 以来,我们更喜欢一些类似的东西

SELECT CASE Field1 WHEN '' THEN 'NewValue' ELSE Field1 END

一个会比另一个表现更好吗?选择一个而不是另一个的其他原因是什么?

SQL*_*Fox 9

您的示例之间的主要区别在于后者不会替换NULL为您的默认值。

关于性能,您通常需要非常努力地找到可测量的差异(在数百万行中以几秒为单位)。搜索 isnull、coalesce 和 case 的性能度量——您会发现很多关于它们的博客文章。

我听到的普遍声音是,您应该使用对您的团队来说最具可读性的结构,并且每当您觉得它可能没有达到应有的性能时,就对其进行测试。以两种方式运行它,并比较完成所需的时间,并比较执行计划。