繁体   English   中英

使用Oracle SQL解析简单的XML

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM