2012-01-13 49 views
3

有输入参数我如何改变正值负

@SMSSessionTimeout AS INT 

假设@SMSSessionTimeout = 300

虽然使用里面begin...end,我想使它负值。 Like @SMSSessionTimeout = -300

在此先感谢。

回答

17

-1

SELECT @SMSSessionTimeout = @SMSSessionTimeout * -1; 
+5

或者从零中减去! – 2012-01-13 08:52:42

+0

虽然我喜欢-1乘法的乘法。使用减号也很方便的日期。例如DATEADD(day,-1,getdate()) – 2012-01-13 08:56:12

+0

是否存在与“绝对”方式相反的做法......如果您必须再次运行sp,然后将其转回到+ .. ... – 2015-10-06 02:42:29

5

前缀用减号值相乘。

SET @SMSSessionTimeout = [email protected] 
+0

我知道它与您的实际上是一样的,但我使用SET @SMSSessionTimeout =(0 - @SMSSessionTimeout);为了可读性:) – Losbear 2016-10-21 16:44:06

1

不会简单的位翻转它吗?

SELECT @SMSSessionTimeout & x80000000; 

有点尴尬,但是为什么当你只想改变符号时要通过全加操作?

0

我认为下面的逻辑可以完美地将正数转换为负数。

IF(@SMSSessionTimeout > 0) 
    SET @SMSSessionTimeout = 0 - @SMSSessionTimeout