我将CSV数据存储在SQL Server 2008的一列中。
[PKID] [DataCSV]
1 1,2,4
2 3,5
以下内容会将该数据转换为行...
; WITH [XmlTable] AS (
SELECT [PKID],
CAST('<d><i>' + REPLACE([MyData],',','</i><i>') + '</i></d>' AS XML) AS [MyDataXml]
FROM [MyTable]
)
SELECT [PKID],
CX.value('.','int') AS [DataItem]
FROM [XmlTable]
CROSS APPLY [MyDataXml].nodes('/d/i') AS CX(CX)
使用正确/期望/想要的结果......
[PKID] [DataItem]
1 1
1 2
1 4
2 3
2 5
我的问题是,如果不使用CTE / XML,是否有更好,更有效,更可接受的方法来实现同样的目标?