例如一个字符串'aa,1,1-bb,2.2-cc,3.3'
在存储过程里转换为table
 aa  1  1
 bb  2  2
 cc  3  3请问怎么实现呢??
万分感谢

解决方案 »

  1.   

    --例子,是这样?declare @str varchar(1000)create table tab(aa varchar(10),bb varchar(10),cc varchar(10))
    set @str='insert tab select '''+replace(replace(replace('aa,1,1-bb,2,2-cc,3,3','.',','),'-',''' union all select '''),',',''',''')+''''
    exec(@str)select * from tab
    drop table tab
      

  2.   

    --測試
    Declare @S Varchar(1000)
    Select @S = 'aa,1.1-bb,2.2-cc,3.3'Select Top 1000 ID = IDentity(Int, 1, 1) Into #T From Syscolumns A, Syscolumns BSelect 
    Left(Col, CharIndex(',', Col) - 1) As Col1,
    Substring(Col, CharIndex(',', Col) + 1, CharIndex('.', Col) - CharIndex(',', Col) - 1) As Col2,
    Stuff(Col, 1, CharIndex('.', Col), '') As Col3
    From
    (
    Select 
    Col = Substring(@S, A.ID, CharIndex('-', @S + '-', A.ID) - A.ID) 
    From #T A
    Where Substring('-' + @S, A.ID, 1) = '-'
    ) ADrop Table #T
    GO
    --結果
    /*
    Col1 Col2 Col3
    aa 1 1
    bb 2 2
    cc 3 3
    */
      

  3.   

    ---或者写在一句中declare @str varchar(1000) set @str='create table tab(aa varchar(10),bb varchar(10),cc varchar(10))  insert tab select '''+replace(replace(replace('aa,1,1-bb,2,2-cc,3,3','.',','),'-',''' union all select '''),',',''',''')+''' go select * from tab go drop table tab '  
    exec(@str)
      

  4.   

    ls  不用那么麻烦吧!  用一个动态的sql就可以了吧!