当我们使用加法赋值 (+=) 时更新空值

问题描述

declare @temp table
(
    Id int,Qty int 
)

insert into @temp values(1,null)
update @temp set Qty+=2

select * from @temp

我正在尝试更新 Qty 列,但认情况下 Qty 列为空。因此,因为生产数据库列在我尝试更新时可能为空,所以我得到一个空值,我需要 Qty 为 2。

解决方法

使用 coalesce(或 isnull)处理空情况。

update @temp set Qty = coalesce(Qty,0) + 2;
,

如果要增加值,则该列不应允许 NULL

我建议您将值默认为 0。然后不要显式插入 NULL 值:

declare @temp table (
    Id int,Qty int not null default 0
);

insert into @temp (id) values (1);
update @temp set Qty += 2;

select * from @temp;

您也可以将 insert 表示为:

insert into @temp (id,value) values (1,default);