------------一个字符串截取问题-------------------
729从J075703(1400)&J074457(280)&J071234(280)转出
728从J075703转出
729从J075703转出
721从J074457(160)&J075703(6560)转出
729从J075703(18480)转出
829从J076081(1080)&J075703(600)转出
在一个表某字段中有如上6行记录,这个记录中包含了很多 7 位长的编号。
现在我要将这些文本中的编号升级,升级为10位长的编号。
升级的规则是:从编号的右边开始找,找到不是数字的时候就加入三个零。
上面这六行记录升级后的结果应该如下:
729周从J000075703(1400)&J000074457(280)&J000071234(280)转出
728周从J000075703转出
729周从J000075703转出
721周从J000074457(160)&J000075703(6560)转出
729周从J000075703(18480)转出
829周从J000076081(1080)&J000075703(600)转出
请问用SQL语句怎么实现啊???
[解决办法]
update tb
set col=replace(col,'J0','J0000')
[解决办法]
TRY:
update 表 set 字段=replace(字段,'J','J000')
[解决办法]
--创建函数:create function wsp(@sql varchar(8000))returns @val varchar(8000)begin set @val='' while(charindex('从',@sql)>0 or charindex('&',@sql)>0 ) begin if(charindex('从',@sql)<charindex('&',@sql) and charindex('从',@sql)>0) begin set @val=@val+left(@sql,charindex('从',@sql)) set @sql=substring(@sql,charindex('从',@sql)+1,len(@sql)) set @sql=stuff(@sql,patindex('%[0-9]%',@sql),0,'000') end else begin set @val=@val+left(@sql,charindex('&',@sql)) set @sql=substring(@sql,charindex('&',@sql)+1,len(@sql)) set @sql=stuff(@sql,patindex('%[0-9]%',@sql),0,'000') end end return @val+@sqlend--调用函数修改:update 表名 set 字段=dbo.wsp(字段)
[解决办法]