@str='1,2,3,4,5,6,7,8,9,0'    ,为分隔符早SQL中如何分割字符串,并用个临时表装起来断电啦,明天早上来结

解决方案 »

  1.   

    CREATE FUNCTION dbo.fnSplit(
    @sInputList VARCHAR(8000), -- List of delimited items
    @sDelimiter VARCHAR(8000) = ',' -- delimiter that separates items
    )
    RETURNS @List TABLE (item VARCHAR(8000))
    BEGIN
    DECLARE @sItem VARCHAR(8000)
    WHILE CHARINDEX(@sDelimiter,@sInputList,0) <> 0
    BEGIN
    SELECT  @sItem=RTRIM(LTRIM(SUBSTRING(@sInputList,1,CHARINDEX(@sDelimiter,@sInputList,0)-1))),
    @sInputList=RTRIM(LTRIM(SUBSTRING(@sInputList,CHARINDEX(@sDelimiter,@sInputList,0)+LEN(@sDelimiter),LEN(@sInputList))))
    IF LEN(@sItem) > 0  INSERT INTO @List SELECT @sItem
    END
    IF LEN(@sInputList) > 0 INSERT INTO @List SELECT @sInputList -- Put the last item in
    RETURN
    ENDGO--Testselect * from fnSplit('1,2,3,4,5,6,7,8,9,0', ',')
      

  2.   

    CREATE TABLE tb (id INT,col VARCHAR(30)) SELECT 
    a.id,
    col=SUBSTRING(a.col,number,CHARINDEX(',',a.col+',',number)-b.number)
    FROM tb a
    JOIN master..spt_values b
      ON b.type='p' 
       AND CHARINDEX(',',','+a.col,number)=number
       
    2005
    SELECT a.id,b.col
    FROM (SELECT id,col=CAST('<v>'+REPLACE(col,',','</v><v>')+'</v>' AS xml) FROM tb) a
    OUTER APPLY (SELECT col=T.C.value('.','varchar(50)') FROM a.col.nodes('/v') AS T(C)) b
      

  3.   

    declare @str nvarchar(2000)
    set @str='1,2,3,4,5,6,7,8,9,0'
    set @str = replace(@str, ',',' as a union select ')
    execute sp_executesql @s '返回一个数据集。
      

  4.   


    create function Split (  
    @StringToSplit varchar(2048),  
    @Separator varchar(128))  
    returns table as return  
    with indices as  
    (  
    select 0 S, 1 E  
    union all  
    select E, charindex(@Separator, @StringToSplit, E) + len(@Separator)  
    from indices  
    where E > S  
    )  
    select substring(@StringToSplit,S,  
    case when E > len(@Separator) then e-s-len(@Separator) else len(@StringToSplit) - s + 1 end) String  
    ,S StartIndex          
    from indices where S >0  
    select  String  from Split('1,2,3,4,5,6,7,8,9,0' , ',') group by string  /*
    String
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9(10 row(s) affected)
    */
      

  5.   

    http://blog.csdn.net/q107770540/archive/2010/08/06/5792794.aspx