如何将正值改为负值

时间:2012-01-13 08:46:56

标签: sql-server sql-server-2008

我有输入参数

@SMSSessionTimeout AS INT

假设@SMSSessionTimeout = 300

begin...end内部使用时,我希望将其设为负值。 与@SMSSessionTimeout = -300

一样

提前致谢。

5 个答案:

答案 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