SQL recursivo para dividir CSV en filas de tabla
Después de trabajar en una pregunta diferente aquí sobre SO, me topé con CTE recursivos que en la superficie parecerían una forma bastante fácil de resolver el problema "Dividir un csv en filas de tabla".
Puse este ejemplo juntos
DECLARE @InputString varchar(255) = 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z'
SELECT @InputString = @InputString + ','
;
with MyCTE(x,y)
as
(
SELECT
x = SUBSTRING(@InputString,0,PATINDEX('%,%',@InputString)),
y = SUBSTRING(@InputString,PATINDEX('%,%',@InputString)+1,LEN(@InputString))
UNION ALL
SELECT
x = SUBSTRING(y,0,PATINDEX('%,%',y)),
y = SUBSTRING(y,PATINDEX('%,%',y)+1,LEN(y))
FROM
MyCTE
WHERE
SUBSTRING(y,PATINDEX('%,%',y)+1,LEN(y)) <> '' OR
SUBSTRING(y,0,PATINDEX('%,%',y)) <> ''
)
SELECT x FROM MyCTE
OPTION (MAXRECURSION 2000);
GO
¿Es realmente una mala idea? ¿Cuál es la sobrecarga en SQL para consultas recursivas como esta y cuáles son las posibles dificultades para este tipo de enfoque?
or cierto, estoy pensando que esta idea / técnica probablemente podría aprovecharse para resolver estootr pregunta.