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

一个关于字符串拆分的问题。急
declare   str   varchar(100)
set   str= 'aa,b,cd,de,ed '
我要把str按照逗号分割拆开后再循环所有的值将其加来,应该怎么做?
谢谢。不要告诉我去掉逗号就可以了,我主要是拆开后要循环。

------解决方案--------------------
create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(a varchar(100))
/*--实现split功能 的函数
--date :2005-4-20
--Author :Domino
*/
as
begin
declare @i int
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
while @i> =1
begin
insert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
end
if @SourceSql <> '\ '
insert @temp values(@SourceSql)
return
end


select * from dbo.f_split( '山东:济南:山东:济南 ', ': ')

select top 1 * from f_split( '山东:济南 ', ': ')
------解决方案--------------------
declare @str varchar(100)
set @str= 'aa,b,cd,de,ed '
declare @sql varchar(8000)
select @sql= 'select ' ' '
select @sql=@sql+replace(@str, ', ', ' ' ' union all select ' ' ')+ ' ' ' '
exec(@sql)

--result
----
aa
b
cd
de
ed