Oracle中对XMLType的简单操作(extract、extractvalue)
来源:互联网 发布:java 替换 编辑:程序博客网 时间:2024/06/02 02:31
前几天一直在做Oracle对XMLType字段的操作,我还不是Oracle大拿,到网上找了很多资料,但是很多就是单一功能的介绍,不能很好的解决问题,现在在这里总结下。
1、下面先创建一个名未test.xml的配置文件。
<?xml version="1.0" encoding="UTF-8" ?><collection xmlns=""> <record> <leader>-----nam0-22-----^^^450-</leader> <datafield tag="200" ind1="1" ind2=" "> <subfield code="a">抗震救灾</subfield> <subfield code="f">奥运会</subfield> </datafield> <datafield tag="209" ind1=" " ind2=" "> <subfield code="a">经济学</subfield> <subfield code="b">计算机</subfield> <subfield code="c">10001</subfield> <subfield code="d">2005-07-09</subfield> </datafield> <datafield tag="610" ind1="0" ind2=" "> <subfield code="a">计算机</subfield> <subfield code="a">笔记本</subfield> </datafield> </record></collection>
2、在Oracle中创建一个存放该XML文件的表:
create or replace table xmlexample(ID varchar2(10),name varchar2(20),data xmltype)insert into xmlexample(id,name,data)values(sys_guid(),'my document', xmltype ( bfilename(filepath,filename), nls_charset_id('AL32UTF8') ))
其中filepath为文件路径,filename为文件名。
3、extractvalue()函数的使用
Oracle提供对XML文件的检索功能(extractvalue),extractvalue只能返回一个节点的一个值,具体操作方法如下:
SQL> select id,name, 2 extractvalue(x.data,'/collection/record/leader') as A 3 from xmlexample x;ID NAME A---------- -------------------- ----------------------------------1 my document -----nam0-22-----^^^450-
如果该节点有两个值,则系统提示错误。
4、extract()函数的使用
如果想查询所有subfield的值就要用到extract(),它可以返回一个节点下的所有值。操作如下
SQL> select id,name, 2 extract(x.data,'/collection/record/datafield/subfield') as A 3 from xmlexample x;ID NAME A---------- -------------------- ---------------------------------------------------------1 my document <subfield xmlns="" code="a">抗震救灾</subfield><subfield xmlns="" code="f">何观.....
可以看到它返回的是XML格式的。如果我们想只返回它值就要是用两个函数了。
5、table和XMLSequence
操作如下:
SQL> select extractValue(value(i),'/subfield') xx 2 from xmlexample x, 3 table(XMLSequence(extract(x.data,'/collection/record/datafield/subfield'))) i;XX--------------------------------------------------------------------------------抗震救灾何观华经济学计算机100012005-07-09计算几 哈哈7 rows selected。
6、检索出特定的节点的特定值
有时候我们在实际操作的时候并不是检索出所有值,而是根据条件查询出我们所需要的信息。如果我们想检索出
<datafield tag="209" ind1=" " ind2=" ">
<subfield code="a">经济学</subfield>
中的值-经济学
操作如下:
SQL> select id,name, 2 extractvalue(x.data,'/collection/record/datafield[@tag="209"]/subfield[@code="a"]') as A 3 from xmlexample x;ID NAME A---------- -------------------- ---------------------------1 my document 经济学
7、总结
Oracle对与XMLType的操作有很多种,还要靠大家自己去发现。数据库对XML的检索就是吧XML的节点当作一个列来检索,而不同的是表里装的是二维的数据,而XML中可以装N维。还有就是,表中列不存在就会提示无效标识符,如果节点不存在,则检索出NULL,不会报错。所以,对与XML文件的操作通常是通过试图来完成。
0 0
- Oracle中对XMLType的简单操作(extract、extractvalue)
- Oracle中对XMLType的简单操作(extract、extractvalue)
- Oracle中对XMLType的简单操作(extract、extractvalue
- Oracle中对XMLType的简单操作(extract、extractvalue
- Oracle中对XMLType的简单操作(extract、extractvalue
- oracle xmltype简单操作
- xmltype.extractValue
- Oracle中对XML格式数据的操作,CLOB类型转换XMLType类型
- oracle的xmltype例子
- oracle的xmltype例子
- oracle的xmltype例子
- Oracle 中 用XMLTYPE类型 解析并操作XML数据
- 关于Oracle的XMLType类型的数据库操作
- 如何将xml文件存入oracle 的xmltype类型中
- oracle中对于xmlType数据节点的增删改
- Oracle的XMLTYPE的处理
- Oracle中Extract函数的用法
- Oracle中Extract函数的用法
- Android【Layout_weight的深刻理解】
- Sicily 1901. Beans
- 从关系型数据库到非关系型数据库
- make
- js跳转到锚点(jQuery动画滚动到锚点)
- Oracle中对XMLType的简单操作(extract、extractvalue)
- Assets/NGUI/Scripts/UI/UILabel.cs(398,33): error CS0506: `UILabel.relativeSize': cannot override inh
- UIColor RGB颜色对照表
- web.xml中webAppRootKey
- 百度地图计算两点之间距离
- HashMap和HashTable的区别
- win7 nodejs找不到express命令 , express is not recognized
- Win7下Android native code的编译和调试
- JavaScript中的Date(日期)对象