Created
March 26, 2024 09:56
-
-
Save mukarramjavid/67192bf212545d6b392962992e3bdbe6 to your computer and use it in GitHub Desktop.
Split string usig delimeter in SQL SERVER
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CREATE FUNCTION dbo.GetSplitString_CTE | |
( | |
@List VARCHAR(MAX), | |
@Delimiter VARCHAR(255), | |
@ElementNumber int | |
) | |
RETURNS VARCHAR(4000) | |
AS | |
BEGIN | |
DECLARE @result varchar(4000) | |
DECLARE @Items TABLE ( position int IDENTITY PRIMARY KEY, | |
Item VARCHAR(4000) | |
) | |
DECLARE @ll INT = LEN(@List) + 1, @ld INT = LEN(@Delimiter); | |
WITH a AS | |
( | |
SELECT | |
[start] = 1, | |
[end] = COALESCE(NULLIF(CHARINDEX(@Delimiter, | |
@List, @ld), 0), @ll), | |
[value] = SUBSTRING(@List, 1, | |
COALESCE(NULLIF(CHARINDEX(@Delimiter, | |
@List, @ld), 0), @ll) - 1) | |
UNION ALL | |
SELECT | |
[start] = CONVERT(INT, [end]) + @ld, | |
[end] = COALESCE(NULLIF(CHARINDEX(@Delimiter, | |
@List, [end] + @ld), 0), @ll), | |
[value] = SUBSTRING(@List, [end] + @ld, | |
COALESCE(NULLIF(CHARINDEX(@Delimiter, | |
@List, [end] + @ld), 0), @ll)-[end]-@ld) | |
FROM a | |
WHERE [end] < @ll | |
) | |
INSERT @Items SELECT [value] | |
FROM a | |
WHERE LEN([value]) > 0 | |
OPTION (MAXRECURSION 0); | |
SELECT @result=Item | |
FROM @Items | |
WHERE position=@ElementNumber | |
RETURN @result; | |
END | |
GO |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment