ALTER FUNCTION [dbo].[XXX]
(
@list nvarchar(MAX),
@delim nchar(1) = ','
)
RETURNS TABLE
AS
RETURN
WITH csvtbl(debut, fin) AS (
SELECT
debut = convert(bigint, 1),
fin = charindex(@delim, @list + convert(nvarchar(MAX), @delim))
UNION ALL
SELECT
debut = fin + 1,
fin = charindex(@delim, @list + convert(nvarchar(MAX), @delim), fin + 1)
FROM csvtbl -- recursive
WHERE (fin > 0)
)
SELECT ltrim(rtrim(convert(nvarchar(4000),
substring(@list, debut,
CASE WHEN fin > 0 THEN fin - debut
ELSE 0 END)
))) AS Value
FROM csvtbl
WHERE (fin > 0)
浙公网安备 33010602011771号