我现在只能写出如果如果数值是个位的是没有问题,如果是10位的或者百位的就不行了,求高手写出一个不管个位数还是10位数或者百位数的都能翻倍。
下面是把 PB1的值翻倍成PB
select pb=ltrim(rtrim(str(convert(int,substring(pb,1,1))*2)))
+'|'+ ltrim(rtrim(str(CONVERT(int,SUBSTRING(pb,3,1)*2))))
+'|'+ ltrim(rtrim(str(CONVERT(int,SUBSTRING(pb,5,1)*2))))
+'|'+ ltrim(rtrim(str(CONVERT(int,SUBSTRING(pb,7,1)*2))))
,pb as pb1 from yw_dh2xiang where dhcode = '1028'
输出结果
pb pb1
6|8|10|12 3|4|5|6
8|8|10|6 4|4|5|6
12|10|10|12 6|5|5|6
SQL? UPDATE
------解决方案--------------------
create table liq
(pb1 varchar(30))
insert into liq
select '3
------解决方案--------------------
4
------解决方案--------------------
5
------解决方案--------------------
6' union all
select '4
------解决方案--------------------
4
------解决方案--------------------
5
------解决方案--------------------
6' union all
select '6
------解决方案--------------------
5
------解决方案--------------------
5
------解决方案--------------------
6' union all
select '650
------解决方案--------------------
51
------解决方案--------------------
6' union all
select '3
------解决方案--------------------
53
------解决方案--------------------
122' union all
select '32
------解决方案--------------------
35
------解决方案--------------------
67' union all
select '100
------解决方案--------------------
300
------解决方案--------------------
200'
create function dbo.fnpb1
(@x varchar(30))
returns varchar(30)
as
begin
declare @r varchar(30),@t varchar(30),@i int
select @x=@x+'
------解决方案--------------------
',@r='',@t='',@i=1
while(@i<=len(@x))
begin
if substring(@x,@i,1)='