2012-01-13 48 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