How to split a comma-separated value to columns

后端 未结 30 4638
刺人心
刺人心 2020-11-21 04:38

I have a table like this

Value   String
-------------------
1       Cleo, Smith

I want to separate the comma delimited string into two colu

30条回答
  •  刺人心
    刺人心 (楼主)
    2020-11-21 04:55

    This function is most fast:

    CREATE FUNCTION dbo.F_ExtractSubString
    (
      @String VARCHAR(MAX),
      @NroSubString INT,
      @Separator VARCHAR(5)
    )
    RETURNS VARCHAR(MAX) AS
    BEGIN
        DECLARE @St INT = 0, @End INT = 0, @Ret VARCHAR(MAX)
        SET @String = @String + @Separator
        WHILE CHARINDEX(@Separator, @String, @End + 1) > 0 AND @NroSubString > 0
        BEGIN
            SET @St = @End + 1
            SET @End = CHARINDEX(@Separator, @String, @End + 1)
            SET @NroSubString = @NroSubString - 1
        END
        IF @NroSubString > 0
            SET @Ret = ''
        ELSE
            SET @Ret = SUBSTRING(@String, @St, @End - @St)
        RETURN @Ret
    END
    GO
    

    Example usage:

    SELECT dbo.F_ExtractSubString(COLUMN, 1, ', '),
           dbo.F_ExtractSubString(COLUMN, 2, ', '),
           dbo.F_ExtractSubString(COLUMN, 3, ', ')
    FROM   TABLE
    

提交回复
热议问题