【发布时间】:2023-03-10 15:55:02
【问题描述】:
我有一个xml,如下面的代码所示
我想遍历每个节点并在每个 TextReadingName 节点之后插入一个节点
DECLARE @XML XML =
N'<Steplist>
<Step>
<StepId>e36a3450-1c8f-44da-b4d0-58e5bfe2a987</StepId>
<Rank>1</Rank>
<IsComplete>false</IsComplete>
<TextReadingName>bug-8588_Updated3</TextReadingName>
</Step>
<Step>
<StepId>4078c1b1-71ea-4578-ba61-d2f6a5126ba1</StepId>
<Rank>2</Rank>
<TextReadingName>reading1</TextReadingName>
</Step>
</Steplist>';
--SELECT x.XmlCol.value('(StepId)[1]', 'nvarchar(max)') as StepId
--FROM @xml.nodes('/Steplist/Step') x(XmlCol)
这就是我希望我的新 xml 的外观
N'<Steplist>
<Step>
<StepId>e36a3450-1c8f-44da-b4d0-58e5bfe2a987</StepId>
<Rank>1</Rank>
<IsComplete>false</IsComplete>
<TextReadingName>bug-8588_Updated3</TextReadingName>
<TextReadingId>1</TextReadingId>
</Step>
<Step>
<StepId>4078c1b1-71ea-4578-ba61-d2f6a5126ba1</StepId>
<Rank>2</Rank>
<TextReadingName>reading1</TextReadingName>
<TextReadingId>2</TextReadingId>
</Step>
</Steplist>';
我可以选择如下所示的节点,但无法遍历每个节点并修改数据
--SELECT x.XmlCol.value('(StepId)[1]', 'nvarchar(max)') as StepId
--FROM @xml.nodes('/Steplist/Step') x(XmlCol)
我正在寻找与上面相同的功能,但用于插入节点
这就是我希望我的新 xml 在 TextReading 名称之后使用名为 TextReadingId 的新节点的方式
N'<Steplist>
<Step>
<StepId>e36a3450-1c8f-44da-b4d0-58e5bfe2a987</StepId>
<Rank>1</Rank>
<IsComplete>false</IsComplete>
<TextReadingName>bug-8588_Updated3</TextReadingName>
<TextReadingId>1</TextReadingId>
</Step>
<Step>
<StepId>4078c1b1-71ea-4578-ba61-d2f6a5126ba1</StepId>
<Rank>2</Rank>
<TextReadingName>reading1</TextReadingName>
<TextReadingId>2</TextReadingId>
</Step>
</Steplist>';
【问题讨论】:
标签: sql xml xquery xquery-sql