1
此列(名为docum_xml)具有XML结构是这样的:的Xquery REPLACE语句用于在DB2表中的多个节点
<member>
<client1>
<phone>510-000-0001</phone>
</client1>
<client2></client2>
<client3>
<phone>510-000-0002</phone>
</client3>
...
</member>
我想做一个XMLQUERY摆脱来自标签的所有潜在的破折号。我写的查询是:
UPDATE TABLENAME
SET DOCUM_XML = XMLQUERY('
TRANSFORM
COPY $new := $documxml
MODIFY(
DO REPLACE VALUE OF $new//phone WITH fn:replace($documxml//phone,''-'',''''))
RETURN $new' PASSING DOCUM_XML AS "documxml");
但它给了我错误说: SQL16003N数据类型的表达式“(项目(),项目()+)”不能使用时,数据类型“项() “预计在上下文中。
我意识到它错了,因为我试图更新多个节点,所以我认为这里可能需要for循环。但我坚持构建for循环并将正确的数据返回到DB2列。有人可以帮我吗?
谢谢! 斯特拉
更新TABLENAME 集DOCUM_XML = XMLQUERY(” 变换 复制$新:= $ documxml 修改( 为$电话$新//电话 返回替换节点$ phone的值WITH fn:replace($ phone,'''','''') ) return $ new'PASSING DOCUM_XML AS“documxml”); – Stella
我试过这个,但由于语法错误而出错。我在哪里做错了? – Stella
错误是什么? – prker