XMLTYPE提取多个路径/索引

时间:2014-01-24 12:45:09

标签: xml oracle indexing extract xmltype

我有一个表“TEST”,其中包含CLOB列“XML”(DB Oracle 11),其中保存了xml的内容。

在此列中,您可以找到具有此类内容的行

1行

<xml>
     <identification>Test1</identification>
<xml>

2行

<xml>
    <identificationNumber>Test2</identificationNumber>
<xml>

正常的提取物是这样的:

    Select
    XMLTYPE("TEST"."XML").EXTRACT('//identification/text()').getStringVal()
    From "XML"

1。问题

我如何从两个路径中提取?因为两个名称相同,例如只是xml中的错误。

2。问题

虽然在一个选择中有很多提取,但为了表现,索引可能更好,或者?

如何将上述提取物编入索引?

1 个答案:

答案 0 :(得分:1)

问题1

如果节点位于层次结构中的相同位置,则可以使用以下内容:

SQL> create table test (xml clob)
  2  /

Table created.

SQL> insert into test
  2  select '<xml>
  3       <identification>Test1</identification>
  4  </xml>' from dual union all
  5  select '<xml>
  6      <identificationNumber>Test2</identificationNumber>
  7  </xml>' from dual
  8  /

2 rows created.

SQL> select XMLTYPE("TEST"."XML").EXTRACT('/xml//text()').getStringVal()
  2    from test
  3  /

XMLTYPE("TEST"."XML").EXTRACT('/XML//TEXT()').GETSTRINGVAL()
-----------------------------------------------------------------------------------
Test1
Test2

2 rows selected.

问题2

在这个例子中,索引可能不会对你有任何帮助。但总的来说,这里有一些关于XML索引的链接: