2011-08-18 9 views

Odpowiedz

37

Użyj T-SQL IF:

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

Spójrz na MSDN docs.

+7

To łatwe, huh? Będę wtykać widelec w gniazdko elektryczne i zdobędę brudną igłę z tylnego zaułka w Atlantic City i inne równie głupie rzeczy. Dziękuję za pomoc. – Jake

+1

@Jake, bez obaw. Wszyscy mamy nasze dni. BTW, witamy w StackOverflow! –

25

Innym podejściem, gdy masz wiele aktualizacje byłoby użyć COALESCE:

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

To właśnie biłem głową w biurko, próbując to zrobić. Wygląda o wiele ładniej niż cała masa par "jeśli-aktualizacja", gdy w grę wchodzi tuzin kolumn. – Herb

+0

Po prostu genialny !!! Dziękuję bardzo. –

0

Jeszcze innym rozwiązaniem jest ISNULL().

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

Różnica między ISNULL i COALESCE jest typem powrotu. COALESCE może również zająć więcej niż 2 argumenty i użyć pierwszego, który nie jest pusty. To znaczy.

select COALESCE(null, null, 1, 'two') --returns 1 
select COALESCE(null, null, null, 'two') --returns 'two' 
Powiązane problemy