2013-10-25 15 views
1

我在SQL Server 2008 R2中有一個過程,我想將數據輸入到vol_Hours列,並在之前檢查它是否爲空,然後再加上具有舊數據的條目在列中,如果它是NULL,則將該條目添加到列中而不加NULL值。 我不能添加2 + NULL,因爲它= NULL。 我的代碼是:在SQL SERVER中檢查列爲NULL或NOT

create procedure updateVolunteerHours 
    @vol_ID int, @vol_Hours int 
    As 
    if vol_Hours is NULL 
    -- vol_Hours it is the Column Name 
    Update Personal_Information set vol_Hours = @vol_Hours where vol_ID = @vol_ID 
    else 
    Update Personal_Information set vol_Hours = @vol_Hours + vol_Hours where vol_ID = @vol_ID 

回答

3

在這種情況下,只需更新添加表達式中使用COALESCE(或ISNULL或CASE)和完全刪除IF語句。

Update Personal_Information 
set vol_Hours = COALESCE(vol_Hours, 0) + @vol_Hours 
where vol_ID = @vol_ID 

如果兩個分支做完全不同的事情,那麼條件將不得不進行修改,以使用查詢的結果。

IF EXISTS(SELECT * FROM Personal_Information 
      WHERE vol_ID = @vol_ID 
      AND vol_Hours IS NULL) .. 

..但這只是在這裏不需要。

+1

只是爲了增加閱讀材料,如果有人感到無聊,我寫了一篇關於COALESCE與ISNULL的文章(http://www.mssqltips.com/sqlservertip/2689/deciding-between-coalesce-and- ISNULL-在-SQL服務器/)。 –

+0

@ user2864740 |感謝它的工作 –

+0

我打算把你的文章作爲答案,但讓我看看是否有人有另一種解決方案。我只是想要它作爲我的文章爲什麼它不起作用 –

相關問題