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

字符串拆分表问题
现有字符串:
◎a※1◎b※2◎c※3◎d※4
我想拆成这样的表:

C1         C2
a           1
b           2
c           3
d           4

如何来做?

------解决方案--------------------
declare @s varchar(200)

set @s= '◎a※1◎b※2◎c※3◎d※4 '

set @s=replace(replace(@s, '◎ ', ' as C2 union all select ' ' '), '※ ', ' ' ' as C1, ')

set @s=stuff(@s,1,17, ' ')

exec(@s)
------解决方案--------------------
create table #(c1 varchar(10),c2 varchar(10))

declare @sql varchar(8000),@str varchar(100)
set @str= '◎a※1◎b※2◎c※3◎d※4 '

set @sql=stuff(@str,1,1, ' ')
set @sql=replace(@sql, '◎ ', ' ' ' union all select ' ' ')
set @sql=replace(@sql, '※ ', ' ' ', ' ' ')
set @sql= 'select ' ' '+ @sql + ' ' ' '
set @sql= 'insert # '+@sql
--print @sql
exec(@sql)

select * from #

--drop table #
------解决方案--------------------
declare @a nvarchar(1000)
set @a= '◎a※1◎b※2◎c※3◎d※4 '

select top 100 id=identity(int,1,1) into # from syscolumns

select C1=left(x,charindex( '※ ',x)-1),C2=right(x,len(x)-charindex( '※ ',x))
from
(
select substring(@a+ '◎ ',id+1,charindex( '◎ ',@a+ '◎ ',id+1)-id-1) x
from #
where substring(@a,id,1)= '◎ '
) y

drop table #