I've come across a problem with modifying XML within SQL Server that doesn't seem to make sense to me. I want to update the value of an empty node, but it doesn't seem to be working. For instance, say I have this XML tree:
<root>
<node />
</root>
and I want to update the value of <node />
with 'foo' so I have the XML query:
UPDATE [Table]
SET [XmlColumn].modify('
replace value of (root/node/text())[1]
with "foo"')
For some reason, this doesn't work. It treats the node like it doesn't exist. If the node already has a value (e.g., <node>bar</node>
), it works just fine, but when the node is empty, it silently ignores the command, without even throwing any errors. Is there a way to make SQL Server acknowledge a replace value of
on an empty node?
EDIT:
I want the end result of this query to be this:
<root>
<node>
foo
</node>
</root>
UPDATE [Table]
SET [XmlColumn].modify(' insert text{"foo"} into (/root/node)[1]')
Try out this work for me
Will this be of any help: http://whyiamright.wordpress.com/2008/01/02/updating-xml-column-in-sql-server-2005/?
You seem to miss slash in the begining of xpath.
EDIT: Then it seems to be a duplicate of this question:
Update Empty XML Tag in SQL Server
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With