背景 我有一个XML列在我SQL table(使用SQL服务器)。 每个节点上有不同数量的元数据。 例如,在下面的例子,步骤1号有的只是"没有"作为元数据,同时,步数2另外有RBuffer.
<Step No="1" >Step Number 1</Step>
<Step No="2" RBuffer="6000">Step Number 2</Step>
<Step No="3" Macro="5">Step Number 3</Step>
预计输出
我要提取这种元数据的动态,同时还劫掠的价值。 对于上述示例,这会看起来像下面的表。 重要的是,它不应该的问题如何多元数据标签还有,我希望它通过他们所有人。 我的一些数据有10+标签。
节点 | 步骤 | 关键 | 值 |
---|---|---|---|
步骤 | 1 | 值 | 步骤1号 |
步骤 | 2 | RBuffer | 6000 |
步骤 | 2 | 值 | 步骤2号 |
步骤 | 3 | 宏 | 5 |
步骤 | 3 | 值 | 步骤3号 |
迄今为止的工作
迄今为止,我已经能够提取的元数据,在一个静态的方式:
SELECT o.value('@No', 'varchar(32)') [Step]
,o.value('@Macro', 'varchar(32)') [Macro]
,o.value('@RBuffer', 'varchar(32)') [RBuffer]
,o.value('(text())[1]', 'varchar(32)') [Action]
FROM [dbo].[dw_mrd_vss_rundetail_stg] S
CROSS APPLY S.[rundata_detail].nodes('Step') xmlData(o)
这给下表:
步骤 | 宏 | RBuffer | 动作 |
---|---|---|---|
1 | 空 | 空 | 步骤1号 |
2 | 空 | 6000 | 步骤2号 |
3 | 5 | 空 | 步骤3号 |
但我必须明确地呼吁各个值和创造列的以这种方式并不是扩展。 任何帮助,将不胜感激。 我是相对较新,这种数据处理在SQL,这样的解释码将是有益的。