select right(cast((a+1) as varchar(4)) + '000',4)
from a

解决方案 »

  1.   

    declare @a int
    set @a=10000  --初始值为0001+前置的一位1-1update table1 set @a=@a+1,a=right(@a,4)
      

  2.   

    declare @a varchar(50)
    set @a='你好211' --初始值--更新处理
    declare @i int,@head varchar(50),@j int
    select @i=patindex('%[0-9]%',reverse(@a))+1
    ,@head=left(@a,@i)
    ,@j=len(@a)-@i
    ,@i=power(10,@j)+stuff(@a,1,@i,'')-1update table1 set @i=@i+1,a=@head+right(@i,@j)
      

  3.   

    --上面错了,改一下:declare @a varchar(50)
    set @a='你好211大草原123' --初始值--更新处理
    declare @i int,@head varchar(50),@j int
    select @j=patindex('%[^0-9]%',reverse(@a))-1
    ,@head=reverse(stuff(reverse(@a),1,@j,''))
    ,@i=power(10,@j)+right(@a,@j)-1update table1 set @i=@i+1,a=@head+right(@i,@j)
      

  4.   

    --测试数据
    declare @t table(a varchar(50))
    insert @t select 1
    union all select 3
    union all select 3
    union all select 4
    union all select 5--替换处理
    declare @a varchar(50)
    set @a='你好211大草原123' --初始值--更新处理
    declare @i int,@head varchar(50),@j int
    select @j=patindex('%[^0-9]%',reverse(@a))-1
    ,@head=reverse(stuff(reverse(@a),1,@j,''))
    ,@i=power(10,@j)+right(@a,@j)-1update @t set @i=@i+1,a=@head+right(@i,@j)--显示处理结果
    select * from @t/*--测试结果a                     
    --------------------
    你好211大草原123
    你好211大草原124
    你好211大草原125
    你好211大草原126
    你好211大草原127(所影响的行数为 5 行)
    --*/