简体   繁体   English

不插入/删除的T-SQL Move XML节点

[英]T-SQL Move XML node without insert/delete

Using T-SQL, is it possible to move an XML node with a single instruction, rather than having to do an insert followed by a delete ? 使用T-SQL,是否可以通过一条指令移动XML节点,而不必先执行insert然后再执行delete

Example XML... XML示例...

DECLARE @XML XML = '<data><a></a><b></b></data>'

Desired XML... 所需的XML ...

DECLARE @XML XML = '<data><a><b></b></a></data>'

Two step solution... 两步解决方案...

SET @XML.modify('insert (/data/b) as last into (/data/a)[1]')
SET @XML.modify('delete (/data/b)')

Is there a one step solution? 有没有一步解决方案?

As you asked me to place my comment as answer: 当您要求我发表评论作为答案时:

No, there is not... 不,那里没有...

.modify() will allow one single change per call. .modify()将允许每个调用一次更改。

Depending on the actual XML one can 根据实际的XML,可以

  1. shred and rebuild it or 切碎并重建它或
  2. try some fancy XQuery (but TSQL's XQuery is very limited with constructed XML...) 尝试一些奇特的XQuery (但是TSQL的XQuery在构造XML方面非常有限...)

Both will not work generically. 两者都无法正常工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM