【发布时间】:2019-10-18 20:50:54
【问题描述】:
我在 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
【问题讨论】:
-
是的,更正了错字。用户角色重复。
标签: xml oracle plsql oracle-sqldeveloper child-nodes