declare @v varchar(20)
set @v = 'a,bc,d,abce,ddz'
select replace(@v,',',char(13)) item

解决方案 »

  1.   

    草兄,不對啊。
    你的SQL 只是Show出來是那樣,我要的是五條記錄。不是用回車符號隔開的字串。
      

  2.   

    declare @strsql varchar(8000)
    SELECT @strsql='insert into aaa values('''+REPLACE('a,bc,d,abce,ddz',',',''') insert into aaa values(''')+''')'exec (@strsql)
    select * from aaa
      

  3.   

    icevi(按钮工厂)的思路很正确,将字符串替换为动态sql,然后执行就可以了。
      

  4.   

    create table test_t ( a varchar(8))
    GO
    create proc proc_test
    ( @b varchar(200))
    as
    begin
    declare @c varchar(20)
    declare @a int
    select @a=charindex (',',@b)
    while  @a >0
    begin
      select @c=stuff(@b,@a,len(@b)-@a+1,'')
      insert into test_t values (@c)
      select @b=stuff(@b,1,charindex (',',@b),'')
      select @a=charindex (',',@b)
    end
    insert into test_t values (@b)
    end
    GO
    PROC_TEST 'ABC,D,E,F,58438,GD'
    SELECT * FROM TEST_T
    GO
      

  5.   

    create table test_t ( a varchar(8000))
    GO
    create proc proc_test
    ( @b varchar(8000))
    as
    begin
    declare @c varchar(8000)
    declare @a int
    select @a=charindex (',',@b)
    while  @a >0
    begin
      select @c=stuff(@b,@a,len(@b)-@a+1,'')
      insert into test_t values (@c)
      select @b=stuff(@b,1,charindex (',',@b),'')
      select @a=charindex (',',@b)
    end
    insert into test_t values (@b)
    end
    GO
    PROC_TEST 'ABC,D,E,F,58438,GD'
    SELECT * FROM TEST_T
    GO 
      

  6.   

    按钮真是高不可测呀!别说想,我看懂这句话就费了n分钟,pfpf
      

  7.   

    再给大家提供一个思路吧,把以上字符串看成一段格式文本,“,”为记录分隔符,那么字符串就可以看成是一个结果集,使用类似openrowset之类的函数,是否可以到达想要的效果?
    供大家参考!
      

  8.   

    bluepower2008(蓝色力量),
    關鍵是要把字串分割呀,這一步才是最困難的。因為我的字串是動態的。隨時都可以變。
      

  9.   

    剽窃一下按钮姐姐的成果,比较没有创意
    declare @strsql varchar(8000)
    SELECT @strsql ='(select  ''' +  REPLACE('a,bc,d,abce,ddz',',',''') union (select ''') + ''')'
    exec(@strsql)
      

  10.   

    N_chow(一劍飄香):你的字符串不管有多少,怎么变,但应该都是逗号分隔吧,如果这个字符串放在一个文本文件中,使用bulk insert就可以搞定了,可现在是个字符串变量,还没有想出具体的从这种方式下手的办法,只好提供一个思路,让大家有兴趣也可以从这方面考虑一下。
      

  11.   

    bluepower2008(蓝色力量) 说的也很对, 这样批处理起来更快
      

  12.   

    悲哀,我现在连sql语句就不会写,怎么混啊
      

  13.   

    to bluepower2008(蓝色力量),
      明白你的意思了。
      我目前的情況是,有一個SP含有一個參數,@strPara varchar類型的。從前端會傳這樣的類似的值過來:"a,bbb,de,zdf,sdf" , 在SP里面,我想把這個@strpara按逗號分割成單個的字串存放進一個temp table,以便用在後面查詢的JOIN條件中(目的就是不想用動態SQL)。 
      有什麼建議嗎?
      

  14.   

    厉害,厉害,果然高.很佩服一个人sql语句拼的好,就好像佩服一个人洗碗洗的很干净一样
      

  15.   

    如果oracle是不是要改成这样子--
    select 'insert into aaa values('''||REPLACE('a,bc,d,abce,ddz',',','''); insert into aaa values(''')||''')' from dual;