Back to all posts

How to one series with comma separate(any Delimiter) value split into in rows

If we have one series with comma separate(any Delimiter) value and we want split into in rows, I have create function for that: IF OBJECT_ID('TF_SplitSerie…

If we have one series with comma separate(any Delimiter) value and we want split into in rows, I have create function for that:

SQL
IF OBJECT_ID('TF_SplitSeriesIntoRow','TF') IS NOT NULL
BEGIN
    DROP FUNCTION dbo.TF_SplitSeriesIntoRow
END
GO

CREATE FUNCTION dbo.TF_SplitSeriesIntoRow (@Series1 VARCHAR(MAX), @Delimiter CHAR(1),@WordNo INT)
RETURNS @SplitValues TABLE (ID INT IDENTITY,Value1 VARCHAR(MAX))
AS
BEGIN
    DECLARE @Value1 VARCHAR(MAX)
    DECLARE @Pos INT
	DECLARE @SplitValues1 TABLE (ID INT IDENTITY,Value1 VARCHAR(MAX))

    WHILE CHARINDEX(@Delimiter, @Series1) > 0 
    BEGIN
        SET @Pos = CHARINDEX(@Delimiter, @Series1)
        SET @Value1 = SUBSTRING(@Series1, 1, @Pos - 1)
        SET @Series1 = SUBSTRING(@Series1, @Pos + 1, LEN(@Series1) - @Pos)

        INSERT INTO @SplitValues1 (Value1)
        VALUES (@Value1)
    END

    INSERT INTO @SplitValues1 (Value1)
    VALUES (@Series1)

	DECLARE @ID INT
	IF @WordNo = 0 
		SET @ID = NULL
	ELSE 
		SET @ID = @WordNo

	INSERT INTO @SplitValues (Value1)
	SELECT A.Value1 FROM @SplitValues1 A WHERE (@ID IS NULL OR A.ID = @ID)

    RETURN
END
GO
SQL
SELECT * FROM dbo.TF_SplitSeriesIntoRow('John Doe Smith', ' ',1);
SELECT * FROM dbo.TF_SplitSeriesIntoRow('apple,orange,banana', ',',3);
SELECT * FROM dbo.TF_SplitSeriesIntoRow('apple,orange,banana', ',',0);

Keep building your data skillset

Explore more SQL, Python, analytics, and engineering tutorials.