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

解决方案 »

  1.   

    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('山东:济南',':')
      

  2.   

    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