检查 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的主要内容,如果未能解决你的问题,请参考以下文章