在SQL XML中替换空节点的值

Chr*_*ris 7 xml sql-server

我遇到了在SQL Server中修改XML的问题,这对我来说似乎没有意义.我想更新一个空节点的值,但它似乎没有工作.例如,假设我有这个XML树:

<root>
    <node />
</root>
Run Code Online (Sandbox Code Playgroud)

我想<node />用'foo' 更新值,所以我有XML查询:

UPDATE  [Table]
SET     [XmlColumn].modify('
        replace value of (root/node/text())[1]
        with "foo"')
Run Code Online (Sandbox Code Playgroud)

出于某种原因,这不起作用.它将节点视为不存在.如果节点已经有一个值(例如<node>bar</node>),它可以正常工作,但是当节点为空时,它会默默地忽略该命令,甚至不会抛出任何错误.有没有办法让SQL Server replace value of在空节点上确认?

编辑:

我希望这个查询的最终结果是这样的:

<root>
    <node>
        foo
    </node>
</root>
Run Code Online (Sandbox Code Playgroud)

小智 7

UPDATE  [Table] 
SET     [XmlColumn].modify(' insert text{"foo"} into (/root/node)[1]') 
Run Code Online (Sandbox Code Playgroud)

为我尝试这项工作


And*_*ich 2

这会有什么帮助吗:http://whyiamright.wordpress.com/2008/01/02/updating-xml-column-in-sql-server-2005/

您似乎错过了 xpath 开头的斜杠。

编辑:那么它似乎是这个问题的重复:

更新 SQL Server 中的空 XML 标记

  • 前导斜杠仅使路径成为绝对路径。如果没有它,XPath 将匹配路径以“root/node”结尾的任何节点。由于树中没有任何其他节点,因此在本例中,前导斜杠没有区别。 (2认同)