检查 SQL SERVER 中的列是不是为 NULL

Posted

技术标签:

【中文标题】检查 SQL SERVER 中的列是不是为 NULL【英文标题】:Check the Column Is NULL or NOT in SQL SERVER检查 SQL SERVER 中的列是否为 NULL 【发布时间】:2013-11-05 02:40:36 【问题描述】:

我在 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

【问题讨论】:

【参考方案1】:

在这种情况下,只需更新加法表达式以使用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) ..

.. 但这里不需要。

【讨论】:

只是为了补充一些阅读材料,以防有人感到无聊,我写了an article about COALESCE vs. ISNULL。 我会将您的帖子作为答案,但让我看看是否有人有其他解决方案。我只是想把它作为我的帖子,为什么它不起作用 @user2864740|我可以选择一列并使默认值为0吗? @AbdullahBahattab 当然,如果您不需要 NULL 值:1)将默认值设置为 0;然后 2) 使列 NOT NULLABLE (列中当前为 NULL 的所有值都将被分配默认值)。您将需要调查任何使用站点以确保没有任何损坏:) @user2864740|我知道 NUMBER 2 但我不知道 NUMBER 1,如何将 DEFAULT VALUE 设置为 0?

以上是关于检查 SQL SERVER 中的列是不是为 NULL的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 中多列非聚集索引中的列顺序是不是重要?

SQL Server:检查列的数据类型

更新 SQL Server 2005 中的表列

在 SQL Server 中检查多个值为 NULL 的列

SQL-SQL Server-添加具有默认值和检查约束的列

sql server 表值函数将字符串转为列