我有输入参数
@SMSSessionTimeout AS INT
假设@SMSSessionTimeout = 300
在begin...end
内部使用时,我希望将其设为负值。
与@SMSSessionTimeout = -300
提前致谢。
答案 0 :(得分:21)
乘以-1
SELECT @SMSSessionTimeout = @SMSSessionTimeout * -1;
答案 1 :(得分:7)
用减号前缀值。
SET @SMSSessionTimeout = -@SMSSessionTimeout
答案 2 :(得分:1)
不是一个简单的位翻转它吗?
SELECT @SMSSessionTimeout & x80000000;
有点尴尬,但是当你只想改变标志时,为什么要进行完整的添加操作呢?
答案 3 :(得分:1)
我认为下面的逻辑可以很好地将正数转换为负数。
IF(@SMSSessionTimeout > 0)
SET @SMSSessionTimeout = 0 - @SMSSessionTimeout
答案 4 :(得分:0)
如果需要确保产生负值,可以使用:
SET @SMSSessionTimeout = -ABS(@SMSSessionTimeout);
此处有更多关于 ABS 的信息:https://docs.microsoft.com/en-us/sql/t-sql/functions/abs-transact-sql?view=sql-server-ver15