我有以下 xml。
declare @x xml = '
<Cols>
<Col><Name>A</Name></Col>
<Col><Name>B</Name></Col>
<Col><Name>C</Name></Col>
<Col><Name>D</Name></Col>
</Cols>
<Values>
<A>1</A>
<B>2</B>
<C>3</C>
<D>4</D>
</Values>
';
如何编写select @x.query('......')
将其转换为
<Cols>
<Col><Name>A</Name><Value>1</Value></Col>
<Col><Name>B</Name><Value>2</Value></Col>
<Col><Name>C</Name><Value>3</Value></Col>
<Col><Name>D</Name><Value>4</Value></Col>
</Cols>
最佳答案
似乎以下正在做您需要的事情:
select @x.query('
element Cols {
for $c in /Cols/Col
return
<Col>
{ $c/Name }
{ element Value { text {/Values/*[local-name()=$c/Name/text()[1]]} } }
</Col>
}
');
关于sql-server - 使用 xquery 压缩 xml 节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18794515/