检查SQL SERVER中的列是否为NULL

时间:2013-10-25 20:34:47

标签: sql-server-2008-r2

我在SQL Server 2008 R2中有一个过程,我想将数据输入到vol_Hours列并在之前检查它是否为null然后加上列中包含旧数据的条目,如果它为NULL则添加进入列而不加上NULL值。 我无法添加2 + NULL,因为它是= NULL。 我的代码是:

    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

1 个答案:

答案 0 :(得分: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) ..

..但这里不需要。