Den*_*els 12 sql t-sql sql-server-2005 sql-server-2008
我有一个SQL查询,用于导致
除以零例外
我把它包装在CASE
声明中以阻止这种情况发生.有更简单的方法吗?
这是我的代码:
Percentage = CASE WHEN AttTotal <> 0 THEN (ClubTotal/AttTotal) * 100 ELSE 0 END
Run Code Online (Sandbox Code Playgroud)
Tom*_*ler 39
一个更好的方法是使用这样的NULLIF:
Percentage = 100 * ClubTotal / NULLIF(AttTotal, 0)
Run Code Online (Sandbox Code Playgroud)
我的用法NULLIF
有点不同,因为在某些情况下我必须返回一些值.通常,当存在除零误差时,我需要返回0.在那种情况下,我将整个表达式包装成ISNULL
.所以它会是:
Percentage = ISNULL(100 * ClubTotal / NULLIF(AttTotal, 0), 0)
Run Code Online (Sandbox Code Playgroud)
评估内部部分NULL
,然后ISNULL
将其替换为0.
Percentage = IsNull(ClubTotal/NullIf(AttTotal, 0) * 100, 0)
Run Code Online (Sandbox Code Playgroud)