【问题标题】:Getting XML attributes in Oracle11gOracle11g中获取XML属性
【发布时间】:2018-01-25 00:11:51
【问题描述】:

我有一个包含以下数据的 xmlType 字段:

<itemGroups>

  <itemGroup description="FirstGroup" id="0">
    <items>
      <item description="FirstItem" id="0"/>
      <item description="SecondItem" id="1"/>
    </items>
  </itemGroup>

  <itemGroup description="SecondGroup" id="1">
    <items>
        <item description="FirstItem" id="0"/>
        <item description="SecondItem" id="1"/>
    </items>
  </itemGroup>
</itemGroups>

我想将 iiemGroup 属性提取为列表/表格/选择。 示例:

Result:
    DESCRIPTION ID 
    ----------- -----
     FirstGroup 0
    SecondGroup 1

我尝试使用XMLELEMENTXMLTABLEEXTRACT,也尝试使用 getClobVal(),但没有成功。

由于我不能创建新的表或过程,最好现在只使用 SELECT 来解决这个问题。

提前致谢。

【问题讨论】:

    标签: sql xml oracle11g xmltype xmltable


    【解决方案1】:

    您尚未展示您对 XMLTable 的尝试,但它相当简单,使用 @attribute 引用属性:

    -- CTE for dummy data
    with t (xml) as (
      select xmltype('<itemGroups>
    
      <itemGroup description="FirstGroup" id="0">
        <items>
          <item description="FirstItem" id="0"/>
          <item description="SecondItem" id="1"/>
        </items>
      </itemGroup>
    
      <itemGroup description="SecondGroup" id="1">
        <items>
            <item description="FirstItem" id="0"/>
            <item description="SecondItem" id="1"/>
        </items>
      </itemGroup>
    </itemGroups>') from dual
    )
    -- end of CTE
    select x.*
    from t
    cross join xmltable (
      '/itemGroups/itemGroup'
      passing t.xml
      columns description varchar2(20) path '@description',
        id number path '@id'
    ) x;
    

    得到:

    DESCRIPTION              ID
    -------------------- ------
    FirstGroup                0
    SecondGroup               1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-25
      • 1970-01-01
      • 2012-08-01
      • 2016-11-05
      • 2011-07-26
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多