我有一个像下面这样的xml。
datatype 'a seq = Null | Seq of 'a * (unit -> 'a seq)
我使用extract.xmltype提取了xml字段,现在我得到了以下结果。
42
但我需要将数量值相加,即我需要得到结果为6(4 + 2)。
任何帮助将不胜感激。
谢谢, Shihaj
答案 0 :(得分:0)
不清楚你的意思是&#34; xml&#34;。如果它应该是一个XML文档,那么你就错过了最外面的标签,可能就像<Document> ..... </Document>
如果你的文本值完全如你所示(这可能非常糟糕),你可以手动包装在这样的最外层标签中,然后使用标准的Oracle XML工具。对于下面的插图,我假设你只有一个字符串(VARCHAR2或CLOB),没有转换为XML类型;在这种情况下,我连接开始和结束标记,然后在查询中转换为XMLtype。
with t ( str ) as (
select '<LPNDetail>
<ItemName>5054807025389</ItemName>
<DistroNbr/>
<DistributionNbr>TR001000002514</DistributionNbr>
<OrderLine>2</OrderLine>
<RefField2/>
<RefField3>OU01180705</RefField3>
<RefField4>0002</RefField4>
<RefField5>Retail</RefField5>
<Qty>4</Qty>
<QtyUom>Unit</QtyUom>
</LPNDetail>
<LPNDetail>
<ItemName>5054807025563</ItemName>
<DistroNbr/>
<DistributionNbr>TR001000002514</DistributionNbr>
<OrderLine>4</OrderLine>
<RefField2/>
<RefField3>OU01180705</RefField3>
<RefField4>0004</RefField4>
<RefField5>Retail</RefField5>
<Qty>2</Qty>
<QtyUom>Unit</QtyUom>
</LPNDetail>'
from dual
)
-- End of SIMULATED table (for testing purposes only, not part of the solution)
-- Query begins below this line
select sum(x.qty) as total_quantity
from t,
xmltable('/Document/LPNDetail'
passing xmltype('<Document>' || t.str || '</Document>')
columns qty number path 'Qty') x
;
<强>输出强>:
TOTAL_QUANTITY
--------------
6