Подтверждая ответ на вопрос "Разделить один столбец на несколько строк" , который я переписал здесь как [1].
Что такое (значение) Type = 'P'
и почему использовать недокументированные master..spt_values для разделения столбца? Какая польза от этого?
[1]
CREATE TABLE dbo.Table1
(
Col1 CHAR(1),
Col2 CHAR(1),
Col3 CHAR(1),
Col4 VARCHAR(50)
)
GO
INSERT INTO dbo.Table1 VALUES ('A','B','C','1,2,3')
GO
INSERT INTO dbo.Table1 VALUES ('D','E','F','6,7,8,9')
GO
SELECT
T.col1, RIGHT(LEFT(T.col4,Number-1),
CHARINDEX(',',REVERSE(LEFT(','+T.col4,Number-1))))
FROM
master..spt_values,
table1 T
WHERE
Type = 'P' AND Number BETWEEN 1 AND LEN(T.col4)+1 AND
(SUBSTRING(T.col4,Number,1) = ','
-- OR SUBSTRING(T.col4,Number,1) = '') --this does not work correctly anyway
Похожие вопросы: