[英]How to extract and sum xml attribute values in oracle sql developer
我有很多存儲在表online_message列xml_message CLOB的大XML消息。 例如,消息看起來像這樣:
<?xml version="1.0" encoding="utf-8" ?>
<CustomerDetails xmlns="http://something.com/version/1.0">
<CustomerId>100345</CustomerId>
<AccountDetails Account="account1" Value="103"/>
<AccountDetails Account="account2" Value="142"/>
<AccountDetails Account="account3" Value="345"/>
<AccountDetails Account="account4" Value="634"/>
</CustomerDetails>
<?xml version="1.0" encoding="utf-8" ?>
<CustomerDetails xmlns="http://something.com/version/1.0">
<CustomerId>100465</CustomerId>
<AccountDetails Account="account5" Value="198"/>
<AccountDetails Account="account6" Value="567"/>
<AccountDetails Account="account7" Value="1984"/>
<AccountDetails Account="account8" Value="84"/>
</CustomerDetails>
我想獲取所有xml消息中的所有Value屬性並將其匯總。 因此,最終結果(在此示例中)應為103 + 142 + 345 + 634 + 198 + 567 + 1984 + 84 = 4057。 任何想法我怎么能在sql developer中做到這一點?
謝謝!
您可能要嘗試以下操作:
SELECT sum(t.v)
FROM online_message, XMLTABLE('for $i in //*/@Value return $i'
PASSING online_message.xml_message
COLUMNS v NUMBER PATH '.') t
;
這是一種相關方法-您可以嘗試根據自己的目的進行編輯。
select Sum(
to_number(
extractvalue(
xmltype(
dbms_xmlgen.getxml('select count(*) c from '||table_name)),'/ROWSET/ROW/C'))) count
from user_tables;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.