Gio*_*sos 18
纯娱乐:
DECLARE @a INT = -3
SELECT COALESCE(NULLIF (ABS(@a), -@a), 0)
Run Code Online (Sandbox Code Playgroud)
这篇文章只是提示CASE表达式是获得预期结果的更好选择.
NULLIF毕竟,这只是一种幻想CASE.上面的示例查询将(在执行计划中)扩展为:
CASE
WHEN
CASE
WHEN abs([@a])=( -[@a])
THEN NULL
ELSE abs([@a])
END IS NOT NULL
THEN
CASE
WHEN abs([@a])=( -[@a])
THEN NULL
ELSE abs([@a])
END
ELSE (0)
END
Run Code Online (Sandbox Code Playgroud)
合适的CASE表达方式:
-- All versions
SELECT CASE WHEN @a > 0 THEN @a ELSE 0 END;
-- SQL Server 2012 or later
SELECT IIF(@a > 0, @a, 0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20109 次 |
| 最近记录: |