我在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
答案 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) ..
..但这里不需要。