SQL Split comma delimited string User Defined Function

CREATE FUNCTION [dbo].[SplitStringTest](    @CommaDelimitedString varchar(2000))RETURNS @ParsedList table(    StringValue varchar(50))ASBEGIN    DECLARE @OrderID varchar(50), @Pos int    SET @CommaDelimitedString = LTRIM(RTRIM(@CommaDelimitedString))+ ','    SET @Pos = CHARINDEX(',', @CommaDelimitedString, 1)    IF REPLACE(@CommaDelimitedString, ',', '') <> ''    BEGIN        WHILE @Pos > 0        BEGIN            SET @OrderID = LTRIM(RTRIM(LEFT(@CommaDelimitedString, @Pos - 1)))            IF @OrderID <> ''            BEGIN                INSERT INTO @ParsedList (StringValue)                 VALUES (CAST(@OrderID AS varchar(50)))            END            SET @CommaDelimitedString = RIGHT(@CommaDelimitedString, LEN(@CommaDelimitedString) - @Pos)            SET @Pos = CHARINDEX(',', @CommaDelimitedString, 1)        END    END        RETURNEND

Usage

SELECT StringValue FROM  dbo.SplitStringTest('A, B, C, D')

UDF version with extra values

CREATE FUNCTION [dbo].[SplitString](    @ID INT, @CommaDelimitedString varchar(2000))RETURNS @ParsedList table(    ID INT,    ChannelID varchar(50))ASBEGIN    DECLARE @OrderID varchar(50), @Pos int    SET @CommaDelimitedString = LTRIM(RTRIM(@CommaDelimitedString))+ ','    SET @Pos = CHARINDEX(',', @CommaDelimitedString, 1)    IF REPLACE(@CommaDelimitedString, ',', '') <> ''    BEGIN        WHILE @Pos > 0        BEGIN            SET @OrderID = LTRIM(RTRIM(LEFT(@CommaDelimitedString, @Pos - 1)))            IF @OrderID <> ''            BEGIN                INSERT INTO @ParsedList (ID, ChannelID)                 VALUES (@ID, CAST(@OrderID AS varchar(50)))            END            SET @CommaDelimitedString = RIGHT(@CommaDelimitedString, LEN(@CommaDelimitedString) - @Pos)            SET @Pos = CHARINDEX(',', @CommaDelimitedString, 1)                                END    END        RETURNEND

Leave a Reply

Your email address will not be published. Required fields are marked *