使用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转换MySql之递归start with详解

    Oracle转换MySql之递归start with详解

    Oracle中的`startwith`函数在MySQL中需要转换为使用`LIKE`操作符,并且可能需要自定义函数来实现类似的功能
    2024-12-12
  • Oracle触发器用法实例详解

    Oracle触发器用法实例详解

    这篇文章主要介绍了Oracle触发器用法,结合实例形式详细分析了Oracle触发器的概念,功能,语法及相关使用技巧,需要的朋友可以参考下
    2016-03-03
  • Oracle Decode()函数使用技巧分享

    Oracle Decode()函数使用技巧分享

    decode()函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能
    2013-05-05
  • Oracle数据库中SQL开窗函数的使用

    Oracle数据库中SQL开窗函数的使用

    这篇文章主要介绍了Oracle数据库中SQL开窗函数的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • ORALCE substr函数及substrb与字符集关系详解

    ORALCE substr函数及substrb与字符集关系详解

    这篇文章主要介绍了ORALCE substr函数及substrb与字符集关系,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • Oracle数据泵EXPDP/IMPDP导出导入功能详细深入解析

    Oracle数据泵EXPDP/IMPDP导出导入功能详细深入解析

    这篇文章主要给大家介绍了关于Oracle数据泵EXPDP/IMPDP导出导入功能的相关资料,数据泵导出/导入属于逻辑备份,热备份与冷备份都属于物理备份,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • Oracle 12C实现跨网络传输数据库详解

    Oracle 12C实现跨网络传输数据库详解

    这篇文章主要给大家介绍了关于Oracle 12C实现跨网络传输数据库的相关资料,文中介绍的非常详细,相信对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • Oracle查询执行计划

    Oracle查询执行计划

    执行计划(Execution Plan)也叫查询计划(Query Plan),它是数据库执行SQL语句的具体步骤和过程。本文主要介绍了Oracle查询执行计划方法,感兴趣的同学可以参考阅读
    2023-04-04
  • oracle sqlplus 常用命令大全

    oracle sqlplus 常用命令大全

    show和set命令是两条用于维护SQL*Plus系统变量的命令
    2009-05-05
  • Oracle一个用户如何访问其它用户的表应用指南

    Oracle一个用户如何访问其它用户的表应用指南

    本文将详细介绍Oracle一个用户如何访问其它用户的表,需要的朋友可以参考下
    2012-11-11

最新评论