IsNull() SQL函数

3

我试图将名为“Number”的列字段的值增加1,如果该值当前为Null,则将其设置为1,因为无法对Null值进行增量操作。我发现了isNull()函数,并且使用以下语句未能获得结果:

Update SomeTable set Number = IsNull(Number, Number+ 1) where
ItemCode = '000000' ;

我的问题基本上是如何通过增量将字段值同时更新1并在当前值为“NULL”时将其设置为1。
谢谢!

IsNull(Number,0) + 1 - Lamak
@Lamak - 我明白了错误的地方 ;) - Pரதீப்
@Prdp 实际上,你们俩都做到了 :) - Lamak
@Lamak:感谢您的反馈 ;) - Joe Taras
实际上,有些人正在提供如何将零(0)更改为1的建议,即使OP没有要求 :) - Mikael Puusaari
4个回答

13

ISNULL函数的第二个参数中删除Number

任何东西+NULL=NULL

因此,使ISNULL在为NULL时结果为0,然后将1添加到结果

Update SomeTable set Number = IsNull(Number, 0) + 1 where
ItemCode = '000000' ;
Update SomeTable set Number = IsNull(Number+1, 1) where
ItemCode = '000000' ;

或者两个不同的更新(不建议)

Update SomeTable set Number = Number + 1 where
ItemCode = '000000' AND Number IS NOT NULL;

Update SomeTable set Number = 1 where
ItemCode = '000000' AND Number IS NULL;

0

语句 WHERE ItemCode = '000000'; 将更新所有具有此项代码:000000 的记录。一个简单的 update SomeTable set Number = 1 就可以解决你的问题。


0

ISNULL函数在主值为空时选择备用值。

UPDATE SomeTable SET Number =
CASE
    WHEN Number IS NULL THEN 1 ELSE Number + 1
END 
WHERE ItemCode = '000000' ;

或者

UPDATE SomeTable SET Number = ISNULL(Number, 0) + 1
WHERE ItemCode = '000000' ;

-1

最简单的方法是使用coalesce函数,在发现NULL时提供默认值0,例如:

Update SomeTable 
   set Number = coalesce(number,0) + 1
 where ItemCode = '000000' ;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接