update tbl_xml set mov_vcds.modify('replace value of(/videos/video/title/text())[1] with "Anbu"')
没有 text() 我们可以使用这个查询..
update tbl_xml set mov_vcds.modify('replace value of(/videos/video/title/text())[1] with "Anbu"')
没有 text() 我们可以使用这个查询..
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) ?'
所以你需要它。
不幸的是,在路径表达式的末尾以这种方式使用“text()”是很常见的,因为它是不必要的并且有时是有害的。通常,您可以在引用元素内容的上下文中使用元素节点本身。有一些例外,例如在元素构造函数中
<title>{title}</title>
和
<title>{title/text()}</title>
做不同的事情(第一个给你<title><title>original title</title></title>
)。但在这种情况下,通常使用它会更好,title/string()
因为它可以更好地处理嵌套评论、混合内容等。