DB2 Table中的这一列(名为docum_xml)具有如下的xml结构:
<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数据类型的表达式&#34;(item(),item()+)&#34;当数据类型&#34; item()&#34;时不能使用预计会在上下文中出现。
我意识到它错了,因为我试图更新多个节点,所以我认为这里可能需要一个for循环。但是我坚持构造for循环并将正确的数据返回给我的DB2列。有人可以帮帮我吗?
谢谢! 斯特拉
答案 0 :(得分:1)
尝试在修改中使用它:
for $phone in $new//phone
return
replace value of node $phone
with fn:replace($phone,''-'','''')