使用Oracle操作xml格式数据的方法

 更新时间:2023年07月18日 10:38:50   作者:梁萌  
这篇文章主要介绍了使用Oracle操作xml格式数据的方法,Oracle 数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库,需要的朋友可以参考下

前期准备

新建一张用来测试的表

-- Create table
create table XMLTEST
(
  id      NUMBER,
  content VARCHAR2(4000)
);

往表中插入数据

insert into XMLTEST (id, content)
values (1, '<root><app><id>1</id><name>张三</name><age>18</age></app><app><id>2</id><name>李四</name><age>20</age></app><app><id>3</id><name>王五</name><age>30</age></app></root>');
insert into XMLTEST (id, content)
values (2, '<root><app><id>1</id><name>张三</name><age>18</age></app></root>');

字段CONTENT的值为字符串格式的xml数据,

ID为1的记录结构如下:

ID为2的记录结构如下:

下面使用sql对xml数据进行查询:

示例一:

将字符串转为xml格式

select xmltype(CONTENT)  vxml from xmltest;

 示例二:

返回一个节点下的所有值

返回id为1的记录,所有的name的值

--extract 返回一个节点下的所有值
select  extract(xmltype(CONTENT), 'root/app/name') vxml from xmltest where id = 1;

示例三:

将xml数据转为表数据格式

当xml只有一个节点时(ID=2的记录)

--extractvalue只能返回一个节点的一个值  
select x.id tblid,
extractvalue(xmltype(x.CONTENT),'root/app/id') as id,
extractvalue(xmltype(x.CONTENT),'root/app/name') as name,
extractvalue(xmltype(x.CONTENT),'root/app/age') as age
from xmltest x where x.id = 2;

当xml有多个节点时(ID=1的记录)

--table和XMLSequence 将xml节点数据转为表数据格式
select  x.id tblid,
extractValue(value(newval),'/app/id') id,
extractValue(value(newval),'/app/name') name,
extractValue(value(newval),'/app/age') name
from xmltest x,
table(XMLSequence( extract(xmltype(x.CONTENT), 'root/app') )) newval
where x.id = 1;

到此这篇关于使用Oracle操作xml格式数据的方法的文章就介绍到这了,更多相关Oracle操作xml格式数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Oracle 低权限数据库账户得到 OS 访问权限 提权利用

    Oracle 低权限数据库账户得到 OS 访问权限 提权利用

    大概意思就是说,如果 ORACLE 服务是用 administrator 账户启动的,你只要有一个具有 resource 和 connect 权限的数据库账户,就能利用 metasploit 的 smbrelay 功能,本地搭建一个 SMB 欺骗服务器, 来得到系统的访问权限。
    2009-06-06
  • Oracle导入导出dmp文件具体示例

    Oracle导入导出dmp文件具体示例

    这篇文章主要给大家介绍了关于Oracle导入导出dmp文件的相关资料,dmp文件为oracle数据库的数据备份文件,执行oracle数据库导出dmp文件,相当于执行数据库备份;执行导入dmp文件,相当于数据库还原,需要的朋友可以参考下
    2023-11-11
  • 解析如何查看Oracle数据库中某张表的字段个数

    解析如何查看Oracle数据库中某张表的字段个数

    本篇文章是对查看Oracle数据库中某张表的字段个数进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • Oracle控制文件丢失恢复归档模式方法

    Oracle控制文件丢失恢复归档模式方法

    这篇文章主要为大家介绍了Oracle控制文件丢失恢复归档模式详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪<BR>
    2022-07-07
  • oracle行转列与列转行的几种方式汇总

    oracle行转列与列转行的几种方式汇总

    最近项目需要进行行转列,经过上网查找到了一些解决方法,分享给大家,这篇文章主要给大家介绍了关于oracle行转列与列转行的几种方式,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • ORACLE批量导入图片到BLOB字段代码示例

    ORACLE批量导入图片到BLOB字段代码示例

    这篇文章主要介绍了ORACLE批量导入图片到BLOB字段代码示例,此代码示例是文章作者的项目源码,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • Oracle中PL/SQL的块与表达式

    Oracle中PL/SQL的块与表达式

    这篇文章介绍了Oracle中PL/SQL的块与表达式,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • Oracle查看表结构的几种方法示例代码

    Oracle查看表结构的几种方法示例代码

    本文通过示例代码给大家介绍了oracle查看表结构的几种方式,感兴趣的朋友参考下吧
    2017-07-07
  • Oracle数据库的系统结构

    Oracle数据库的系统结构

    这篇文章主要介绍了Oracle数据库的系统结构,Oracle数据库的存储结构(Storage Structure)分为物理存储结构和逻辑存储结构两种,分别描述了在操作系统中和数据库系统内部数据的组织管理方式,需要的朋友可以参考下
    2023-07-07
  • Oracle数据库备份还原详解

    Oracle数据库备份还原详解

    大家好,本篇文章主要讲的是Oracle数据库备份还原详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12

最新评论