Oracle XML:提取子标记名称

时间:2017-07-20 12:11:28

标签: sql xml oracle oracle11g

如何通过xpath选择所有子标签名称?

我有一张这样的表:

CREATE TABLE Foo (
  DATA VARCHAR2(4000) NOT NULL ENABLE
)

DATA中提供了一些XML数据,如下所示:

<foo>
  <a>some</a>
  <b>another</b>
  <c>some else<c>
</foo>

我想从第二级提取所有标签:

select xmltype(DATA).extract('/foo/*').getRootElement() as MY_TAGS form Foo;

(我期待这样的清单)

a
b
c

但我得到了null值的结果:

(null)
(null)
(null)

1 个答案:

答案 0 :(得分:2)

select * from xmltable('foo/*'  passing xmltype('<foo>
  <a>some</a>
  <b>another</b>
  <c>some else</c>
</foo>') 
columns 
tag_name varchar2(100) path 'name()',
tag_value varchar2(100) path 'text()'    
)