1
update tbl_xml set mov_vcds.modify('replace value of(/videos/video/title/text())[1] with "Anbu"') 

没有 text() 我们可以使用这个查询..

4

2 回答 2

4

text()指定title节点的内容。没有它你会得到

Msg 2356, Level 16, State 1, Line 9
XQuery [tbl_xml.mov_vcds.modify()]: The target of 'replace value of' must be a non-metadata attribute or an element with simple typed content, found 'element(title,xdt:untyped) ?'

所以你需要它。

于 2012-03-02T10:36:06.797 回答
2

不幸的是,在路径表达式的末尾以这种方式使用“text()”是很常见的,因为它是不必要的并且有时是有害的。通常,您可以在引用元素内容的上下文中使用元素节点本身。有一些例外,例如在元素构造函数中

<title>{title}</title>

<title>{title/text()}</title>

做不同的事情(第一个给你<title><title>original title</title></title>)。但在这种情况下,通常使用它会更好,title/string()因为它可以更好地处理嵌套评论、混合内容等。

于 2012-03-02T11:46:04.700 回答