UFN_STRING_PARSER

Allow to parse any given string with any given delimiter

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@Delimiter char(1) IN
@String varchar(max) IN

Definition

Copy


create function dbo.UFN_STRING_PARSER(
  @Delimiter AS CHAR(1)=','
  @String    AS VARCHAR(MAX)
 )
returns table
as 
return

  with [Numbers](num)
  as
  (   
        SELECT 0
        UNION ALL
        SELECT ROW_NUMBER() OVER(ORDER BY [id]) as num FROM sys.syscolumns
  )
  -- Split given string using given delimiter

  ,[Split](Num, String)
  AS
  (
        SELECT 
              Num
              ,SUBSTRING
              (
                    @String,
                    Num,
                    CASE CHARINDEX(@Delimiter, @String, Num)
                          WHEN 0 THEN LEN(@String) - Num + 1
                          ELSE CHARINDEX(@Delimiter, @String, Num) - Num
                          END
              ) AS String
        FROM  [Numbers]
        WHERE Num <= LEN(@String)
        AND         (SUBSTRING(@String, Num - 1, 1) = @Delimiter OR Num = 0)
  )


      SELECT
                   ROW_NUMBER() OVER (ORDER BY Num) AS [id]
                  ,RTRIM(LTRIM([String])) AS [Item]
      FROM  [Split]
      WHERE String <> ''
)