使用列值拆分提取表数据

时间:2011-02-10 04:54:48

标签: sql-server tsql sql-server-2008

我有一个表格数据

col1    col2    col3   col4
11       12     xx yy    20
22       13     qq aa    21

我的TDD使用TSQL作为

col1     col2    col3    col4
11       12       xx      20
11       12       yy      20
22       13       qq      21
22       13       aa      21

基本上,col3具有空格值,需要为空格值分隔的每个值创建行。

感谢 prav

1 个答案:

答案 0 :(得分:2)

看看这样的事情

DECLARE @Table TABLE(
        col1 INT,
        col2 INT,
        col3 VARCHAR(50),
        col4 INT
)

INSERT INTO @Table SELECT  11,12,'xx yy',20  
INSERT INTO @Table SELECT  22,13,'qq aa',21

;WITH Vals AS (
    SELECT  *,
            CAST('<d>' + REPLACE(col3, ' ', '</d><d>') + '</d>' AS XML) XMLCol
    FROM    @Table
)
SELECT  Vals.*,
        T.split.value('.', 'VARCHAR(MAX)') SplitValue
FROM    Vals
CROSS APPLY
        XMLCol.nodes('/d') T(split)