【问题标题】:IsNull() sql functionIsNull() sql 函数
【发布时间】:2017-06-03 01:56:48
【问题描述】:

我正在尝试将名为“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 - 我理解错误;)
  • @Prdp 事实上,你们俩都做过 :)
  • @Lamak:感谢您的反馈;)
  • 实际上,即使 OP 没有要求它,有些人也在就如何将零(0)更改为 1 提供建议:)

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    任何东西 + NULL = NULL

    所以当它是NULL 时,将ISNULL 设为结果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;
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-09-09
          • 1970-01-01
          • 2010-09-15
          • 2013-08-07
          • 1970-01-01
          • 2017-12-04
          • 2018-11-11
          • 2011-04-01
          相关资源
          最近更新 更多