Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. CREATE FUNCTION dbo.GetSplitString_CTE
  2. (
  3. @List VARCHAR(MAX),
  4. @Delimiter VARCHAR(255),
  5. @ElementNumber int
  6. )
  7. RETURNS VARCHAR(4000)
  8. AS
  9. BEGIN
  10.  
  11. DECLARE @result varchar(4000)
  12. DECLARE @Items TABLE ( position int IDENTITY PRIMARY KEY,
  13. Item VARCHAR(4000)
  14. )
  15.  
  16. DECLARE @ll INT = LEN(@List) + 1, @ld INT = LEN(@Delimiter);
  17.  
  18. WITH a AS
  19. (
  20. SELECT
  21. [start] = 1,
  22. [end] = COALESCE(NULLIF(CHARINDEX(@Delimiter,
  23. @List, @ld), 0), @ll),
  24. [value] = SUBSTRING(@List, 1,
  25. COALESCE(NULLIF(CHARINDEX(@Delimiter,
  26. @List, @ld), 0), @ll) - 1)
  27. UNION ALL
  28. SELECT
  29. [start] = CONVERT(INT, [end]) + @ld,
  30. [end] = COALESCE(NULLIF(CHARINDEX(@Delimiter,
  31. @List, [end] + @ld), 0), @ll),
  32. [value] = SUBSTRING(@List, [end] + @ld,
  33. COALESCE(NULLIF(CHARINDEX(@Delimiter,
  34. @List, [end] + @ld), 0), @ll)-[end]-@ld)
  35. FROM a
  36. WHERE [end] < @ll
  37. )
  38. INSERT @Items SELECT [value]
  39. FROM a
  40. WHERE LEN([value]) > 0
  41. OPTION (MAXRECURSION 0);
  42.  
  43. SELECT @result=Item
  44. FROM @Items
  45. WHERE position=@ElementNumber
  46.  
  47. RETURN @result;
  48. END
  49. GO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement