2011-08-18 56 views

回答

37

使用T-SQL IF

IF @ABC IS NOT NULL AND @ABC != -1 
    UPDATE [TABLE_NAME] SET [email protected] 

看一看的MSDN docs

+7

那容易吧?好吧,我要去把一個叉子插在電源插座上,在大西洋城的一條後巷和其他同樣愚蠢的東西上弄髒針。感謝您的幫助。 – Jake

+1

@Jake,不用擔心。我們都有我們的日子。順便說一句,歡迎來到StackOverflow! –

25

,當你有很多的更新是使用COALESCE另一種方法:

UPDATE [DATABASE].[dbo].[TABLE_NAME] 
SET  
    [ABC] = COALESCE(@ABC, [ABC]), 
    [ABCD] = COALESCE(@ABCD, [ABCD]) 
+5

這就是我在試圖做的桌子上敲我的頭。當涉及十幾個專欄時,比一大堆「if-update」對更好看。 – Herb

+0

簡單輝煌!非常感謝。 –

0

另一種方法是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'