Я провел дни в поисках простого решения следующей проблемы, и мне нужна помощь, пожалуйста. У меня есть таблица Oracle с двумя столбцами: recid (номер счета) в качестве первичного ключа и xmlrecord, в котором хранятся все данные xml. Я пытаюсь экспортировать значения, из которых у нас есть многозначные элементы, для нашего приложения с помощью SQL-запроса. Исключая повреждения данных, всегда будет соответствующий c2 m="1" и c3 m="1", если есть c1 m="1" и так далее. Таблица слишком велика, чтобы нажимать ее несколько раз, чтобы извлечь каждый элемент, поэтому мне нужно вытащить их все из xmlrecord при одном доступе к строке. Я пробовал внутренние соединения (1 = 1) и xmltables, но всегда получаю NULLS в возвращаемых данных или каждое новое совпадение в новой строке. Извлечение значения с верхнего уровня у меня не работает в этом случае из-за структуры xml
Наша структура данных базовой таблицы:
RECID XMLRECORD
-----------------------------------
0000001 <row><c1>test</c1><c2>test2</c2>....</row>
0000002 <row><c1>test</c1><c2>test2</c2>....</row>
Приведенные выше записи будут работать нормально, поскольку в них нет полей с несколькими значениями. Где я борюсь, так это в том, что данные, хранящиеся в XMLRecord, выглядят следующим образом:
<row>
<c1>test1</c1>
<c1 m=1>test1_2</c1>
<c2>test2</c2>
<c2 m=1>test2_2</c2>
<c3>test3</c3>
<c3 m=1>test3_2</c3>
</row>
Формат вывода, который я хотел бы, приведен ниже:
RECID Col1 Col2 Col3
-----------------------------------
0000003 test1 test2 test3
0000003 test1_2 test2_2 test3_2
0000004 test1 test2 test3
0000004 test1_2 test2_2 test3_2