Created
November 23, 2023 13:30
-
-
Save gabrielfreirebraz/41fcef633a70167ce81700eb0a2767ec to your computer and use it in GitHub Desktop.
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].[F_SPLIT_STRING]( @STRING NVARCHAR (MAX), @DELIMITER NVARCHAR (10) ) | |
RETURNS @VALUETABLE TABLE ([VALUE] NVARCHAR(MAX)) | |
BEGIN | |
DECLARE @NEXTSTRING NVARCHAR(4000) | |
DECLARE @POS INT | |
DECLARE @NEXTPOS INT | |
DECLARE @COMMACHECK NVARCHAR(1) | |
IF (@STRING IS NULL) | |
BEGIN | |
INSERT INTO @VALUETABLE ( [VALUE]) VALUES ('') | |
END | |
ELSE | |
BEGIN | |
--INITIALIZE | |
SET @NEXTSTRING = '' | |
SET @COMMACHECK = RIGHT(@STRING,1) | |
--CHECK FOR TRAILING COMMA, IF NOT EXISTS, INSERT | |
--IF (@COMMACHECK <> @DELIMITER ) | |
SET @STRING = @STRING + @DELIMITER | |
--GET POSITION OF FIRST COMMA | |
SET @POS = CHARINDEX(@DELIMITER,@STRING) | |
SET @NEXTPOS = 1 | |
--LOOP WHILE THERE IS STILL A COMMA IN THE STRING OF LEVELS | |
WHILE (@POS <> 0) | |
BEGIN | |
SET @NEXTSTRING = SUBSTRING(@STRING,1,@POS - 1) | |
INSERT INTO @VALUETABLE ( [VALUE]) VALUES (@NEXTSTRING) | |
SET @STRING = SUBSTRING(@STRING,@POS +1,LEN(@STRING)) | |
SET @NEXTPOS = @POS | |
SET @POS = CHARINDEX(@DELIMITER,@STRING) | |
END | |
END | |
RETURN | |
END |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Works fine as alternative of native STRING_SPLIT (when its't give us necessary requisites)
https://learn.microsoft.com/pt-br/sql/t-sql/functions/string-split-transact-sql?view=sql-server-ver16