日期:2014-05-17  浏览次数:20834 次

sql如何把字符串中分割符号以外的数值乘以任意倍数
我现在只能写出如果如果数值是个位的是没有问题,如果是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)='