我有存储在Oracle 11g数据库中的XML类型数据。我的数据的粗略版本将如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<record>
<record_number>12345</record_number>
<record_type> book </record_type>
</record>
数据操作功能,例如:
SELECT XML_Type FROM Metadata
指定每行包含格式良好的XML文件的列(包含许多标记和元素)。我正在努力提取和计算每个<record_type>
元素的出现次数。例如,我想知道XML标签<record_type>
有多少次元素'book','article'等。但我不知道与标签相关的整个元素列表。
谢谢,
我
答案 0 :(得分:3)
具体取决于您的数据的确切存储方式(即表中有1行是1个XML文档,看起来像您发布的样本,还是表中有1行是1个XML文档,有很多不同的记录标签)最简单的方法就像
SQL> ed
Wrote file afiedt.buf
1 with t as (select '<?xml version="1.0" encoding="UTF-8"?>
2 <record>
3 <record_number>12345</record_number>
4 <record_type> book </record_type>
5 </record>' xml
6 from dual
7 union all
8 select '<?xml version="1.0" encoding="UTF-8"?>
9 <record>
10 <record_number>6789</record_number>
11 <record_type> magazine </record_type>
12 </record>' xml
13 from dual)
14 select xmltype(t.xml).extract( '//record_number/text()' ) record_number,
15 xmltype(t.xml).extract( '//record_type/text()' ) record_type
16* from t
SQL> /
RECORD_NUMBER RECORD_TYPE
-------------------- ------------------------------
12345 book
6789 magazine
一旦提取了数据,就应该很容易计算或汇总数据。