2

我知道如何在 oracle 中解析一个类似这样的 xml

select extractvalue(column_value, 'CIRS/CIR/@applicantId') applicantId
into applicantId
 from CIBIL_BINARY_INPUT ,table(xmlsequence(xmltype(ded_enq_xml)))  

现在我有一个如下所示的xml

<library>
    <book>
    <name>Harry potter</name>
    <author>Harry potter</author>
    </book>
    <book>
    <name> watson </name>
    <author>Harry watson </author>
    </book>
    <book>
    <name> john </name>
    <author> potter</author>
    </book>
    </library>

如您所见,书节点重复了多次

我如何提取它以便我可以将它作为 3 个不同的“书”行插入到我的library表中。

请建议。

4

1 回答 1

0

似乎您的第一个问题是从 xml 中提取多本书。这可以这样解决:

select
    extractvalue(column_value, '/book/name') name,
    extractvalue(column_value, '/book/author') author
from
  table(xmlsequence(extract(xmltype('<library><book>...</book><book>...</book>...</library>'), '/library/book')));

希望这可以帮助。

于 2014-05-13T13:45:45.643 回答