Tsql Case语句为ISNULL
我对T-SQL非常陌生,希望使用isnull简化这个查询Tsql Case语句为ISNULL,tsql,Tsql,我对T-SQL非常陌生,希望使用isnull简化这个查询 case when datediff(d, appdate, disdate) IS NOT NULL THEN datediff(d, appdate, disdate) ELSE Case when appdate is null THEN datediff(d,update,getdate()) when disdate IS NULL THEN datediff(d,appdate,
case
when datediff(d, appdate, disdate) IS NOT NULL THEN datediff(d, appdate, disdate)
ELSE
Case
when appdate is null THEN datediff(d,update,getdate())
when disdate IS NULL THEN datediff(d,appdate,getdate())
END
END
虽然没有太多的简化,但这应该做同样的事情:
ISNULL(datediff(d, appdate, disdate) ,
CASE WHEN appdate IS NULL THEN datediff(d,update,getdate())
WHEN disdate IS NULL THEN datediff(d,appdate,getdate()) END
)
ISNULL
的第二个参数可以简化一点(到datediff(DAY,IIF(appdate为NULL,[update],appdate),getdate())
)@MartinSmith我想了一下,但因为这是一个案例,当…当…
时,而不是一个案例,当else
时,我认为它并不完全相同,因此我不应该在这种情况下使用IIF
。@ZoharPeled非常感谢你的想法。我使用了它,并且能够将它缩小到:isnull(datediff(d,appdate,disdate),isnull(datediff(d,appdate,getdate()),datediff(d,update,getdate()))@MartinSmith我没有考虑使用IIF来实现这一点。这完全有道理。谢谢。可能重复:提示:MSDN博客上有关于COALESCE
和ISNULL
的好信息。