检查 SQL SERVER 中的列是否为 NULL

Abd*_*tab 3 sql-server-2008-r2

我在 SQL Server 2008 R2 中有一个过程,我想将数据输入到 vol_Hours 列并在它之前检查它如果它不为空然后加上它在列中的旧数据的条目,如果它是空然后将条目添加到没有加上 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
Run Code Online (Sandbox Code Playgroud)

use*_*740 6

在这种情况下,只需更新添加表达式以使用COALESCE(或 ISNULL 或 CASE)并完全删除 IF 语句。

Update Personal_Information
set vol_Hours = COALESCE(vol_Hours, 0) + @vol_Hours
where vol_ID = @vol_ID
Run Code Online (Sandbox Code Playgroud)

如果两个分支做了完全不同的事情,则必须更改条件以使用查询的结果。

IF EXISTS(SELECT * FROM Personal_Information
          WHERE vol_ID = @vol_ID
          AND vol_Hours IS NULL) ..
Run Code Online (Sandbox Code Playgroud)

.. 但这在这里是不需要的。