Sql server 使用列值拆分提取表数据
我有一个数据表Sql server 使用列值拆分提取表数据,sql-server,tsql,sql-server-2008,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
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看看这样的东西
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)
第三列是否一致?两个字符后跟一个空格,然后再加两个字符?如果是这样的话,那么您的解决方案就相当简单了——使用第三列的子字符串进行两次插入。如果没有,您将不得不做一些更复杂的事情——比如使用计数表来查找空间两边的值。我对XML不够了解,不知道它是否按照您的方式编译和运行,但是如果确实如此——那么做得很好!