kreta/Kreta.DataAccess.Migrations/DBScripts/Database/dbo/Functions/fnConvertStringIntListToTable.sql
2024-03-13 00:33:46 +01:00

22 lines
No EOL
663 B
Transact-SQL

IF OBJECT_ID('[fnConvertStringIntListToTable]') IS NOT NULL BEGIN
DROP FUNCTION [fnConvertStringIntListToTable]
END
GO
CREATE FUNCTION [fnConvertStringIntListToTable] (
@pString NVARCHAR(4000),
@pDelimiter NCHAR(1)
) RETURNS TABLE AS RETURN (
WITH Split(stpos, endpos) AS (
SELECT 0 AS stpos, CHARINDEX(@pDelimiter,@pString) AS endpos
UNION ALL
SELECT endpos + 1, CHARINDEX(@pDelimiter,@pString,endpos+1)
FROM Split
WHERE endpos > 0
)
SELECT
ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS Rn
,CAST(SUBSTRING(@pString, stpos, COALESCE(NULLIF(endpos, 0), LEN(@pString) + 1) - stpos) AS int) AS Data
FROM Split
);
GO