T-SQL, Split String
Funktion för att separera mindre texter.
Mycket användbar, iallafall för mig, då jag ofta har en situation då jag behöver hantera (kortare) kommaseparerade listor.
Från SQL Server 2016 finns den inbyggda funktionen STRING_SPLIT(), men den saknar ordningen på fragmenten, vilket hindrar den från att vara ett alternativ i alla lägen.
CREATE FUNCTION Util.String_Split (
@Text varchar(MAX),
@Delimiter varchar(MAX)
)
RETURNS @Table TABLE (
Id int IDENTITY,
Txt varchar(MAX)
)
AS
BEGIN
WHILE CHARINDEX(@Delimiter, @Text) <> 0
BEGIN
INSERT INTO @Table
(
Txt
)
SELECT
NULLIF(
SUBSTRING(@Text, 0, CHARINDEX(@Delimiter, @Text)),
''
);
SELECT
@Text = NULLIF(
SUBSTRING(
@Text,
CHARINDEX(@Delimiter, @Text) + LEN(@Delimiter),
LEN(@Text)
),
''
);
END;
INSERT INTO @Table
(
Txt
)
VALUES
(@Text);
RETURN;
END;