Comma-separated String into Table's Column in SQL Server

前端 未结 3 1999
一个人的身影
一个人的身影 2020-12-11 11:39

I am working with SQL Server, I have successfully converted a table\'s rows into comma-separated values, now I want to convert that string of comma-separated values back to

3条回答
  •  清歌不尽
    2020-12-11 12:28

    Create a function:

    CREATE FUNCTION [dbo].[Split](@String nvarchar(4000), @Delimiter char(1))
    RETURNS @Results TABLE (Items nvarchar(4000))
    AS
    BEGIN
        DECLARE @Index INT
        DECLARE @Slice nvarchar(4000)
        -- HAVE TO SET TO 1 SO IT DOESN’T EQUAL ZERO FIRST TIME IN LOOP
        SELECT @Index = 1
        WHILE @Index !=0
            BEGIN
                SELECT @Index = CHARINDEX(@Delimiter,@String) --Getting the indexof the first Occurrence of the delimiter
    
                -- Saving everything to the left of the delimiter to the variable SLICE
                IF @Index !=0
                    SELECT @Slice = LEFT(@String,@Index - 1)
                ELSE
                    SELECT @Slice = @String
    
                -- Inserting the value of Slice into the Results SET
                INSERT INTO @Results(Items) VALUES(@Slice)
    
                --Remove the Slice value from Main String
                SELECT @String = RIGHT(@String,LEN(@String) - @Index)
    
                -- Break if Main String is empty
                IF LEN(@String) = 0 BREAK
            END
        RETURN
    END
    

    Pass the string @str and the delimiter (,) to the function.

    SELECT Items FROM [dbo].[Split] (@str, ',')
    

    It will return the result as a table:

    Items
    
    0.00
    0.00
    1576.95
    0.00
    4105.88
    1017.87
    0.00
    6700.70
    

    See SQL Fiddle

提交回复
热议问题