使用Oracle操作xml格式數(shù)據(jù)的方法
前期準備
新建一張用來測試的表
-- 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對xml數(shù)據(jù)進行查詢:
示例一:
將字符串轉(zhuǎn)為xml格式
select xmltype(CONTENT) vxml from xmltest;
示例二:
返回一個節(jié)點下的所有值
返回id為1的記錄,所有的name的值
--extract 返回一個節(jié)點下的所有值 select extract(xmltype(CONTENT), 'root/app/name') vxml from xmltest where id = 1;
示例三:
將xml數(shù)據(jù)轉(zhuǎn)為表數(shù)據(jù)格式
當(dāng)xml只有一個節(jié)點時(ID=2的記錄)
--extractvalue只能返回一個節(jié)點的一個值 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有多個節(jié)點時(ID=1的記錄)
--table和XMLSequence 將xml節(jié)點數(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle轉(zhuǎn)換MySql之遞歸start with詳解
Oracle中的`startwith`函數(shù)在MySQL中需要轉(zhuǎn)換為使用`LIKE`操作符,并且可能需要自定義函數(shù)來實現(xiàn)類似的功能2024-12-12Oracle數(shù)據(jù)庫中SQL開窗函數(shù)的使用
這篇文章主要介紹了Oracle數(shù)據(jù)庫中SQL開窗函數(shù)的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07ORALCE?substr函數(shù)及substrb與字符集關(guān)系詳解
這篇文章主要介紹了ORALCE?substr函數(shù)及substrb與字符集關(guān)系,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07Oracle數(shù)據(jù)泵EXPDP/IMPDP導(dǎo)出導(dǎo)入功能詳細深入解析
這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)泵EXPDP/IMPDP導(dǎo)出導(dǎo)入功能的相關(guān)資料,數(shù)據(jù)泵導(dǎo)出/導(dǎo)入屬于邏輯備份,熱備份與冷備份都屬于物理備份,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2023-12-12Oracle 12C實現(xiàn)跨網(wǎng)絡(luò)傳輸數(shù)據(jù)庫詳解
這篇文章主要給大家介紹了關(guān)于Oracle 12C實現(xiàn)跨網(wǎng)絡(luò)傳輸數(shù)據(jù)庫的相關(guān)資料,文中介紹的非常詳細,相信對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-06-06Oracle一個用戶如何訪問其它用戶的表應(yīng)用指南
本文將詳細介紹Oracle一個用戶如何訪問其它用戶的表,需要的朋友可以參考下2012-11-11