xml - 甲骨文11g : Extracting and Counting XML elements

标签 xml oracle xquery

我将 XML 类型的数据存储在 Oracle 11g 数据库中。我的数据的粗略版本如下所示:

<?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”等。不过,我不知道与该标签关联的元素的完整列表。

谢谢

我。

最佳答案

具体取决于您的数据存储方式(即,表中是否有 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

提取数据后,应该很容易计算或以其他方式聚合数据。

关于xml - 甲骨文11g : Extracting and Counting XML elements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11105491/

相关文章:

jquery - 使用 jQuery 解析 XML...检索元素时出现问题

sql - 查找按订单聚合的最大日期 - Oracle SQL

xquery - xquery初学者-如何在FLWOR语句中使用if-then-else

xml - 返回表达式中的XQuery变量未解析其值

xml - 分配/绑定(bind) for 子句的结果?

python - 用BeautifulSoup解析XML

android - 如何制作这个 Staggered GridView?

java - 客户端-服务器通信的可扩展性; XML v 序列化二进制文件

sql - 如何在 Oracle 中的字符串中查找精确的字符串匹配

multithreading - 在 Oracle PL/SQL 中等待提交的作业完成?