FUNCTION [dbo].[fnSplitCSVxml] (@NumberList VARCHAR(4096)) RETURNS @SplitList TABLE( ListMember INT) AS BEGIN DECLARE @xml XML SET @NumberList = LTRIM(RTRIM(@NumberList)) IF LEN(@NumberList) = 0 RETURN SET @xml = '' + REPLACE(@NumberList,',','') + '' INSERT INTO @SplitList SELECT x.i.value('.','VARCHAR(MAX)') AS Member FROM @xml.nodes('//n') x(i) RETURN END
Tiene diversas aplicaciones del tipo:
SELECT A from B Where B.c in dbo.fnSplitList(@cadena)
Pero es especialmente interesante para informes de Report Server que usen parametros con multiples valores.