我有一个表“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。问题
虽然在一个选择中有很多提取,但为了表现,索引可能更好,或者?
如何将上述提取物编入索引?
答案 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索引的链接: