我有一个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>
我想将iitemGroup属性提取为列表/表/ select。 例如:
Result:
DESCRIPTION ID
----------- -----
FirstGroup 0
SecondGroup 1
我尝试过使用XMLELEMENT
,XMLTABLE
,EXTRACT
,同时使用getClobVal()也没有成功。
由于我无法创建新的表或程序,最好现在只使用SELECT来解决这个问题。
提前致谢。
答案 0 :(得分:0)
您还没有使用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