使用Oracle操作xml格式數(shù)據(jù)的方法
前期準(zhǔn)備
新建一張用來測(cè)試的表
-- Create table create table XMLTEST ( id NUMBER, content VARCHAR2(4000) );
往表中插入數(shù)據(jù)
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數(shù)據(jù),
ID為1的記錄結(jié)構(gòu)如下:

ID為2的記錄結(jié)構(gòu)如下:

下面使用sql對(duì)xml數(shù)據(jù)進(jìn)行查詢:
示例一:
將字符串轉(zhuǎn)為xml格式
select xmltype(CONTENT) vxml from xmltest;


示例二:
返回一個(gè)節(jié)點(diǎn)下的所有值
返回id為1的記錄,所有的name的值
--extract 返回一個(gè)節(jié)點(diǎn)下的所有值 select extract(xmltype(CONTENT), 'root/app/name') vxml from xmltest where id = 1;

示例三:
將xml數(shù)據(jù)轉(zhuǎn)為表數(shù)據(jù)格式
當(dāng)xml只有一個(gè)節(jié)點(diǎn)時(shí)(ID=2的記錄)
--extractvalue只能返回一個(gè)節(jié)點(diǎn)的一個(gè)值 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;

當(dāng)xml有多個(gè)節(jié)點(diǎn)時(shí)(ID=1的記錄)
--table和XMLSequence 將xml節(jié)點(diǎn)數(shù)據(jù)轉(zhuǎn)為表數(shù)據(jù)格式 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;

到此這篇關(guān)于使用Oracle操作xml格式數(shù)據(jù)的方法的文章就介紹到這了,更多相關(guān)Oracle操作xml格式數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle 自定義split 函數(shù)實(shí)例詳解
這篇文章主要介紹了Oracle 自定義split 函數(shù)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-01-01
Oracle存儲(chǔ)過程和存儲(chǔ)函數(shù)創(chuàng)建方法(詳解)
下面小編就為大家?guī)硪黄狾racle存儲(chǔ)過程和存儲(chǔ)函數(shù)創(chuàng)建方法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06
Oracle數(shù)據(jù)庫表名支持的最大長(zhǎng)度是多少
這篇文章主要介紹了Oracle數(shù)據(jù)庫表名支持的最大長(zhǎng)度,本文通過Oracle標(biāo)識(shí)符確認(rèn)了表名的最大支持字符串為30個(gè)字符,需要的朋友可以參考下2014-08-08
Oracle數(shù)據(jù)庫空間滿了進(jìn)行空間擴(kuò)展的方法
這篇文章主要介紹了Oracle數(shù)據(jù)庫空間滿了進(jìn)行空間擴(kuò)展的方法,非常不錯(cuò),具有參考借鑒價(jià)值需要的朋友可以參考下2018-02-02
Oracle實(shí)現(xiàn)分頁查詢的SQL語法匯總
這篇文章主要介紹了Oracle實(shí)現(xiàn)分頁查詢的SQL語法,非常實(shí)用的功能,需要的朋友可以參考下2014-08-08
Oracle11.2.0.1如何升級(jí)到11.2.0.3 Oracle同版本升級(jí)
這篇文章主要為大家詳細(xì)介紹了Oracle11.2.0.1如何升級(jí)到11.2.0.3的過程,Oracle同版本升級(jí)的方法,感興趣的小伙伴們可以參考一下2016-07-07

