我有一個存儲過程,一般是這樣的更新語句:SQL存儲過程:如果變量不爲空,更新語句
Update [TABLE_NAME]
Set [email protected]
有隻觸發如果更新語句的好方法變量不是null還是值-1?
類似於IF NOT EXISTS...INSERT
的問題。
非常感謝。
我有一個存儲過程,一般是這樣的更新語句:SQL存儲過程:如果變量不爲空,更新語句
Update [TABLE_NAME]
Set [email protected]
有隻觸發如果更新語句的好方法變量不是null還是值-1?
類似於IF NOT EXISTS...INSERT
的問題。
非常感謝。
使用T-SQL IF
:
IF @ABC IS NOT NULL AND @ABC != -1
UPDATE [TABLE_NAME] SET [email protected]
看一看的MSDN docs。
,當你有很多的更新是使用COALESCE另一種方法:
UPDATE [DATABASE].[dbo].[TABLE_NAME]
SET
[ABC] = COALESCE(@ABC, [ABC]),
[ABCD] = COALESCE(@ABCD, [ABCD])
這就是我在試圖做的桌子上敲我的頭。當涉及十幾個專欄時,比一大堆「if-update」對更好看。 – Herb
簡單輝煌!非常感謝。 –
另一種方法是ISNULL()。
UPDATE [DATABASE].[dbo].[TABLE_NAME]
SET
[ABC] = ISNULL(@ABC, [ABC]),
[ABCD] = ISNULL(@ABCD, [ABCD])
ISNULL和COALESCE之間的區別是返回類型。 COALESCE也可以接受2個以上的參數,並使用非空的第一個參數。即
select COALESCE(null, null, 1, 'two') --returns 1
select COALESCE(null, null, null, 'two') --returns 'two'
那容易吧?好吧,我要去把一個叉子插在電源插座上,在大西洋城的一條後巷和其他同樣愚蠢的東西上弄髒針。感謝您的幫助。 – Jake
@Jake,不用擔心。我們都有我們的日子。順便說一句,歡迎來到StackOverflow! –