以前有过这样的贴子,可是没找到
create table temp(aaa  varchar(20))
declare @strsql as varchar(8000)
select @strsql=''
select @strsql='insert into temp values ('''+replace('a,b,c,d,e',',',''') insert into temp values (''')+''')'
exec (@strsql)

解决方案 »

  1.   

    存在变量里不如存在表里好。因为变量数是不一定的。你如果想分开来处理,存在表里好了。用动态SQL给变量赋值后,在外部是不能引用的。不好处理。
      

  2.   

    declare @str varchar(300),@id varchar(300),@m int,@n int
    set @str='a,b,c,d,e'
    set @m=CHARINDEX(',',@str)
    set @n=1
    WHILE @m>0
    BEGIN
        set @id=substring(@str,@n,@m-@n)
        print @id
        set @n=@m+1
        set @m=CHARINDEX(',',@str,@n)
    END
      

  3.   

    declare @str varchar(300),@id varchar(300),@m int,@n int
    set @str='a,b,c,d,e'
    set @m=CHARINDEX(',',@str)
    set @n=1
    WHILE @m>0
    BEGIN
        set @id=substring(@str,@n,@m-@n)
        print @id
        set @n=@m+1
        set @m=CHARINDEX(',',@str,@n)
    END
        set @id=substring(@str,@n,len(@str)-@n+1)----last one
        print @id
     
      

  4.   

    考虑 'sdkdklsd,dkdd,hello,ok,'最后为,的情况declare @str varchar(300),@id varchar(300),@m int,@n int
    set @str='fdgklklg,dfgfdodf,dfgfgdf,hytyty,erer,hello,sok,ppp'--'a,b,c,d,e'
    set @m=CHARINDEX(',',@str)
    set @n=1
    WHILE @m>0
    BEGIN
        set @id=substring(@str,@n,@m-@n)
        print @id
        set @n=@m+1
        set @m=CHARINDEX(',',@str,@n)
    END
    IF @n<len(@str)
    BEGIN
        set @id=substring(@str,@n,len(@str)-@n+1)----last one
        print @id
    END