我在 oracle 数据库中有一个存储 XML 数据的列。
出于某种原因,我的查询在插入时没有检查现有节点,因此导致在几行中出现重复节点。
我无法找到找到这些重复项的有效方法。
我的 XML 看起来像:
<myroot>
<mydata>
<myusers>
<username>amy</username>
<userrole/>
<userrole>junior artist</userrole>
</myusers>
<myusers>
<username>rosy</username>
<userrole/>
<userrole>junior artist</userrole>
</myusers>
<myusers>
<username>timmy</username>
<userrole>junior artist</userrole>
</myusers>
</mydata>
</myroot>
如上面的 XML 示例所示,空节点在几行的几个标签中处于空闲状态,但有没有办法我可以找到哪些行包含重复项?
过去我使用下面的查询来提取这些数据,但不知道如何提取两个数据:
SELECT MYID, EXTRACT(MYDATA, 'myroot/mydata/myusers/userole/text()')
FROM MYTABLE
WHERE
EXISTNODE(MYDATA, 'myroot/mydata/myusers/userole') = 1
仅作为背景,我的其他数据提取查询未发送以下错误是现在需要修复上述数据的原因:
ORA-19279: XPTY0004 - XQuery dynamic type mismatch: expected singleton sequence - got multi-item sequence