con un CTE va a tener un problema con la recursividad si hay más de 100 artículos
Msg 530, nivel 16, estado 1, línea 20 La declaración finalizó. El recursión máxima 100 se ha agotado antes de completar la instrucción.
DECLARE @TExt NVARCHAR(MAX)
SET @TExt = '100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203'
DECLARE @Delimiter VARCHAR(1000)= ',';
WITH numbers
AS (SELECT ROW_NUMBER() OVER (ORDER BY o.object_id, o2.object_id) Number
FROM sys.objects o
CROSS JOIN sys.objects o2
),
c AS (SELECT Number CHARBegin ,
ROW_NUMBER() OVER (ORDER BY number) RN
FROM numbers
WHERE SUBSTRING(@text, Number, LEN(@Delimiter)) = @Delimiter
),
res
AS (SELECT CHARBegin ,
CAST(LEFT(@text, charbegin) AS NVARCHAR(MAX)) Res ,
RN
FROM c
WHERE rn = 1
UNION ALL
SELECT c.CHARBegin ,
CAST(SUBSTRING(@text, res.CHARBegin,
c.CHARBegin - res.CHARBegin) AS NVARCHAR(MAX)) ,
c.RN
FROM c
JOIN res ON c.RN = res.RN + 1
)
SELECT *
FROM res
que cerrar esta pregunta desde que pedí uno nuevo que está más cerca de mi verdadero problema: http://stackoverflow.com/questions/5830065/how-to-query-a -single-memo-field-to-obtain-many-results-one-line – LaBracca
No es necesario cerrar. Puede editar sus preguntas –
Sí, tiene razón, ¡realmente tenía prisa! – LaBracca