IsNull()sql函数

时间:2017-01-18 15:48:02

标签: sql sql-server sql-server-2008 sql-update isnull

我正在尝试增加名为" Number"的列字段的值。如果该值当前为Null,我想将该值设置为1,因为Null值不能递增。我发现了isNull()函数,并且没有使用以下语句获得结果:

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

我的问题基本上是如何以1的增量同时更新字段值,如果当前是" NULL"

,则将值设置为1

谢谢!

4 个答案:

答案 0 :(得分:11)

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

  

Anything + NULL = NULL

所以,ISNULL生成0 NULL,然后将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;

答案 1 :(得分:0)

如果主值为null,则

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' ;

答案 2 :(得分:0)

语句WHERE ItemCode = '000000';将使用此商品代码更新所有记录:000000。一个简单的update SomeTable set Number = 1将解决您的问题。

答案 3 :(得分:-1)

最简单的方法是使用coalesce在找到NULL时提供默认值0,如

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