日期:2014-05-19  浏览次数:20577 次

请帮忙,在线....谢谢!!!
R/X/C(43/40/17)
J/K/C/W(57/20/13/10)
T/c(70/30)
C40y
...........
请问对于以上几种格式如何拆分?拆分结果如下

如第一种情况:
R     43
x     40
c     17
第二种情况就折分成
J   57
K   20
C   13
W   10

其它以此类推。。。
最后一种拆分成  

c     100

------解决方案--------------------
Create function getTable
(
@in varchar(100)
)
returns @tab table(a varchar(10),b varchar(10))
as
begin
declare @tmp table(a varchar(10),b varchar(10))
declare @i int,@j1 int,@j2 int
declare @h varchar(50),@e varchar(50)
set @i=charindex( '( ',@in)
if @i> 0
begin
set @h=left(@in,@i-1)+ '/ '
set @e=replace(right(@in,len(@in)-@i), ') ', ' ')+ '/ '
set @j1=charindex( '/ ',@h)
set @j2=charindex( '/ ',@e)
while @j1> 0 and @h <> ' '
begin
insert @tmp select left(@h,@j1-1),left(@e,@j2-1)
set @j1=charindex( '/ ',@h)
set @h=right(@h,len(@h)-@j1)
set @j2=charindex( '/ ',@e)
set @e=right(@e,len(@e)-@j2)
end
end
else
begin
set @i=patindex( '%[0-9]% ',@in)
set @e=right(@in,len(@in)-@i+1)
set @j1=patindex( '%[a-z]% ',@e)
insert @tmp select left(@in,@i-1),left(@e,@j1-1)
end

insert @tab select * from @tmp
return
end
go
select * from dbo.getTable( 'J/K/C/W(57/20/13/10) ')
select * from dbo.getTable( 'C40y ')