[英]Parse simple XML with Oracle SQL
我需要解析以下XML:
<?xml version="1.0" encoding="Windows-1251"?>
<Dialog>
<Item QID="9" Answer="1000" UniqueGrInd="1"/>
<Item QID="10" Answer="1001 UniqueGrInd="2"/>
</Dialog>
并返回如下结果:
QID Answer UniqueGrInd
9 1000 1
10 1001 2
您要使用XMLTABLE,如下所示:
WITH sample_data AS (SELECT 1 id, XMLTYPE('<?xml version="1.0" encoding="Windows-1251"?>
<Dialog>
<Item QID="9" Answer="1000" UniqueGrInd="1"/>
<Item QID="10" Answer="1001" UniqueGrInd="2"/>
</Dialog>') xmldata FROM dual UNION ALL
SELECT 2 id, XMLTYPE('<?xml version="1.0" encoding="Windows-1251"?>
<Dialog>
<Item QID="12" Answer="2000" UniqueGrInd="1"/>
<Item QID="13" Answer="2001" UniqueGrInd="2"/>
<Item QID="14" Answer="2002" UniqueGrInd="3"/>
</Dialog>') xmldata FROM dual)
SELECT sd.id,
x.qid,
x.answer,
x.unique_gr_ind
FROM sample_data sd
CROSS JOIN XMLTABLE('Dialog/Item' PASSING sd.xmldata
COLUMNS qid INTEGER PATH '@QID',
answer INTEGER PATH '@Answer',
unique_gr_ind INTEGER PATH '@UniqueGrInd') x;
ID QID ANSWER UNIQUE_GR_IND
---- --- ------ -------------
1 9 1000 1
1 10 1001 2
2 12 2000 1
2 13 2001 2
2 14 2002 3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.