Declare @stringtest as varchar(8000)
set @stringtest ='1,2,3,4,5,6,7,8,9'
Select * from [dbo].[Split_returns_Table](@stringtest,',')
RESULTADO:
Id
--
1
2
3
4
5
6
7
8
9
(9 row(s) affected)
FUNCION:
CREATE FUNCTION [dbo].[Split_returns_Table]
(
@Id varchar(8000),
@Separador varchar(8) --= ','
)
RETURNS TABLE
AS
RETURN
(
WITH SplitETC (Inicio, Fin)
AS
(
SELECT 1,
CHARINDEX(@Separador, @Id)
UNION ALL
SELECT Fin + LEN(@Separador),
CHARINDEX(@Separador, @Id, Fin + LEN(@Separador))
FROM SplitETC
WHERE Fin > 0
)
SELECT RTRIM(LTRIM(SUBSTRING(@Id, Inicio, Largo))) Id
FROM (SELECT Inicio,
CASE WHEN Fin IS NULL OR Fin = 0 THEN
LEN(@Id) + 1
ELSE
Fin
END - Inicio AS Largo
FROM SplitETC /*OPTION (MAXRECURSION 0) */) AS Split
)
No hay comentarios:
Publicar un comentario