【问题标题】:convert XML to table in oracle在 oracle 中将 XML 转换为表
【发布时间】:2015-10-18 15:21:59
【问题描述】:

我有一个以下格式的 XML,存储在 oracle 数据库中的 XMLType 列中

<a>
<c>1</c>
<c>2</c>
</a>

我需要把它转换成表格格式

c
1
2

知道如何使用 SQL 来做到这一点吗?

【问题讨论】:

    标签: sql xml oracle extract


    【解决方案1】:

    这个url有答案。

    例如用户 daggett 是这样做的:

    select *  
    FROM XMLTABLE('/person/row'  
             PASSING   
                xmltype('
                    <person>
                       <row>
                           <name>Tom</name>
                           <Address>
                               <State>California</State>
                               <City>Los angeles</City>
                           </Address>
                       </row>
                       <row>
                           <name>Jim</name>
                           <Address>
                               <State>California</State>
                               <City>Los angeles</City>
                           </Address>
                       </row>
                    </person>
                ')
             COLUMNS  
                --describe columns and path to them:  
                name  varchar2(20)    PATH './name',  
                state varchar2(20)    PATH './Address/State',  
                city  varchar2(20)    PATH './Address/City'
         ) xmlt  
    ;  
    

    【讨论】:

      【解决方案2】:
      with data as
      (select '<a><c>1</c><c>2</c></a>' xmlval
       from dual)
      ( select c
        from data d, 
             xmltable('/a/*' passing xmltype(d.xmlval) 
              columns
          c varchar2(254) path '/c'   
      ))  
      

      【讨论】:

      • 感谢弗兰克的解决方案。除了在 '/a/' 中使用“”这一事实外,我几乎想通了
      【解决方案3】:

      谢谢,成功了。

      pISLEMLER CLOB;

          select *  
          FROM XMLTABLE('/mydata/UCRET'  
                   PASSING   
                      xmltype('<mydata>'||pISLEMLER||'</mydata>
                      ')
                   COLUMNS  
                      --describe columns and path to them:  
                      F_M_IS_ID  varchar2(20)    PATH './FMISID',  
                      ISKONTO varchar2(20)    PATH 'ISK'
               ) xmlt;
      

      【讨论】:

        猜你喜欢
        • 2019-09-13
        • 2022-10-21
        • 2017-11-24
        • 2013-05-09
        • 2014-02-06
        • 2017-12-10
        • 2021-03-12
        • 2020-11-01
        • 1970-01-01
        相关资源
        最近更新 更多