У меня есть столбец в базе данных 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