gpt4 book ai didi

sql-server - 如果值小于零,则返回零

转载 作者:行者123 更新时间:2023-12-04 14:29:19 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Is there a Max function in SQL Server that takes two values like Math.Max in .NET?

(31 个回答)


5年前关闭。




如果值小于零而不使用 case 语句,是否可以返回零?

例如Max(a, 0) <-- 'Max' 不存在。

我希望我的代码尽可能简洁。

最佳答案

只是为了好玩:

DECLARE @a INT = -3
SELECT COALESCE(NULLIF (ABS(@a), -@a), 0)

这篇文章只是暗示了 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

一个合适的 CASE表达:
-- All versions
SELECT CASE WHEN @a > 0 THEN @a ELSE 0 END;

-- SQL Server 2012 or later
SELECT IIF(@a > 0, @a, 0);

关于sql-server - 如果值小于零,则返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35485607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com