2011-08-18 37 views

Trả lời

37

Sử dụng T-SQL IF:

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

Hãy nhìn vào các MSDN docs.

+7

Thật dễ dàng huh? Tôi sẽ đi một cái nĩa trong một ổ cắm điện và ghi một cây kim bẩn từ một con hẻm phía sau ở Thành phố Atlantic và những thứ ngu ngốc khác. Cảm ơn sự giúp đỡ của bạn. – Jake

+1

@Jake, Đừng lo. Tất cả chúng ta đều có ngày của mình. BTW, chào mừng bạn đến với StackOverflow! –

25

Một cách tiếp cận khi bạn có nhiều bản cập nhật sẽ được sử dụng liên hiệp:

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

Đây là những gì tôi đã đánh đầu vào bàn làm việc. Đẹp hơn nhiều so với một bó toàn bộ các cặp "nếu cập nhật" khi có hàng tá cột liên quan. – Herb

+0

Đơn giản chỉ cần rực rỡ !!! Cảm ơn bạn rất nhiều. –

0

Tuy nhiên, cách tiếp cận khác là ISNULL().

UPDATE [DATABASE].[dbo].[TABLE_NAME] 
SET  
    [ABC] = ISNULL(@ABC, [ABC]), 
    [ABCD] = ISNULL(@ABCD, [ABCD]) 

Sự khác biệt giữa ISNULL và COALESCE là loại trả về. COALESCE cũng có thể mất hơn 2 đối số và sử dụng giá trị đầu tiên không phải là rỗng. I E.

select COALESCE(null, null, 1, 'two') --returns 1 
select COALESCE(null, null, null, 'two') --returns 'two' 
Các vấn đề liên quan