sql-server - 修改SQL Server中的XML添加根节点

标签 sql-server xml xpath shred

为了首先给出这个问题的一些背景知识,我正在重写一些当前循环通过一些 xml 的代码,在每个循环结束时插入到一个表中 - 替换为一个带有 xml 参数并执行一次性插入,将 xml“粉碎”到表中。

主切分已经成功,但是目前其中一个列用于存储整个节点。我已经能够(几乎)计算出为此所需的查询,但它遗漏了节点的根部分。我得出的结论是我的查询已经尽我所能了,我正在寻找一种方法来执行更新语句以将根节点放回那里。

所以我的 xml 的形式是;

<xml>
<Items>
<Item>
    <node1>...</node1><node2>..<node2>.....<noden>...<noden>
<Item>
<Item>
    <node1>...</node1><node2>..<node2>.....<noden>...<noden>
<Item>
<Item>
    <node1>...</node1><node2>..<node2>.....<noden>...<noden>
<Item>
......
<Items>
</xml>

所以基本分解将 node1 的值放入 column1,node2 放入 column2 等。插入语句看起来像;

INSERT INTO mytable col1, col2,...etc.....,wholenodecolumn
Select  
doc.col.value('node1[1]', 'int') column1,
doc.col.value('node2[1]', 'varchar(50)') column2,
....etc......,
doc.col.query('*')--this is the query for getting the whole node
FROM @xml.nodes('//Items/Item') doc(col)

在 wholenodecolumn 中结束的 XML 的形式是;

<node1>...</node1><node2>..<node2>.....<noden>...<noden>

但我需要它的形式是

<Item><node1>...</node1><node2>..<node2>.....<noden>...<noden></Item>

现有代码(很多)取决于此列中的 xml 是否具有正确的形式。

那么有人可以看看如何修改 doc.col.query('*') 以获得所需的结果吗?

无论如何,我放弃了修改查询,并试图想出其他方法来完成最终结果。我现在看到的是插入后的更新——类似;

update mytable set wholenodecolumn.modify('insert <Item> as first before * ')

如果我能做到这一点

 .modify('insert </Item> as last after * ')  

那会很好,但是一次做 1 不是一个选项,因为 XML 这样就无效了

XQuery [mytable.wholenodecolumn.modify()]: Expected end tag 'Item'  

并同时执行这两项操作我不知道这是否可行,但我已经尝试了各种语法但无法开始工作。

任何其他解决问题的方法也很感激

最佳答案

我相信您可以使用 FOR 子句指定根节点名称。

例如:

select top 1 *
from HumanResources.Department
for XML AUTO, ROOT('RootNodeName')

查看在线书籍了解更多详细信息:

http://msdn.microsoft.com/en-us/library/ms190922.aspx

关于sql-server - 修改SQL Server中的XML添加根节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/624206/

相关文章:

xml - Groovy Xml Holder 返回 'null' 作为现有属性的值

java - 为什么我改进的 Selenium IDE 脚本在 Selenium WebDriver 执行中表现不同?

php - 使用 PDO 从 PHP 调用存储过程到使用 INPUT 参数的 MYSQL 服务器

sql-server - 存储过程和权限 - EXECUTE 就足够了吗?

c# - Jmeter非HTTP响应代码: org. apache.http.conn.HttpHostConnectException

java - Netbeans 企业应用程序项目中没有 web.xml

java - 无法读取上传的多部分 xml 文件

xml - 遇到错误 #1067 : Implicit coercion of a value of type String to an unrelated type XML - AS3

xslt - 根据字符串的结尾显示不同的xsl:attribute

sql - 如何将6列按数字顺序排序