将逗号分隔值转换为行结构数据
在 SQL Server 中,当数据以逗号分隔格式存储在列中时,提取和操纵个人价值观可能具有挑战性。本文演示如何使用选择查询将此类数据转换为行结构格式。
考虑一个名为 Sample 的表,其中包含一个名为 String 的列,其中包含逗号-分隔值,例如:
Id | String |
---|---|
1 | abc,def,ghi |
2 | jkl,mno,pqr |
要提取各个值并将其呈现为行,我们可以使用以下方法步骤:
将 String 列包裹在 XML 标签内:
CAST ('<M>' + REPLACE([string], ',', '</M><M>') + '</M>' AS XML)
这将创建一个 XML 片段,其中每个值都封装在 < 中;M>
使用 CROSS APPLY 运算符执行分层查询:
CROSS APPLY String.nodes ('/M') AS Split(a)
这会在 XML 片段上交叉应用节点方法,从而产生一个新的每个
将 Id 列与 Split(a).value('text()') 表达式:
SELECT A.[id], Split.a.value('.','VARCHAR(100)') AS String FROM (SELECT [id], CAST('...AS XML) AS String FROM Sample) AS A这会将 Id 与提取的值相匹配,并将它们作为单独的值返回rows。
Id | ProcessedRows |
---|---|
1 | abc |
1 | def |
1 | ghi |
2 | jkl |
2 | mno |
2 | pqr |
以上是如何将逗号分隔值转换为 SQL Server 中的行?的详细内容。更多信息请关注PHP中文网其他相关文章!