有一SQL语句declare @ID nvarchar(10)
set @ID='00123'我想要的结果是@ID+1,也就是@ID='00124',加1好加只要cast(@ID as int)+1就行,但是它的前面还有两个0,只要cast(@ID as int),@ID就会变成int型前面的两个0会去掉,问有没有什么好的方法既能@ID+1而且前面的两个0还在
注意:前面两个0是不确定的,有可能是一个也可能是俩个,也可能没有,反正是不确定的!

解决方案 »

  1.   

    我也试过这个先判断有0的字符串长度,然后在把@ID转换成int型,在判断int型的长度,再拿它原来的长度(有0的长度)减去int型的长度获取出来的就是前面有几个0,最后在相加之后再把0加上,可是这样做繁琐性能不好,请问有没有什么好的方法!
      

  2.   


    declare @ID nvarchar(10)
    set @ID='00123'
    declare @s varchar(10)
    set @s=cast((CAST(@ID as int) +1) as CHAR(10))
    set @ID= REPLICATE('0',5-len(@s))+@s
      

  3.   

    if(id != 9){
    split(index(4),id+1)
    }else{}代码不对,但是你懂我的意思吧?
      

  4.   

    不管后面的数字有几位,前面都加上6个0,然后用right函数截取右边固定长度部分,就行了。
    例如 001231、123+1
    2、'00000'+'124'
    3、right('00000124',5)
      

  5.   

    我用的就是你这个方法,先cast @ID as int 然后在转换成char或者nvarchar类型
    经理说这样不太好,让我换个更优的方法!