簡體   English   中英

如何在Oracle SQL Developer中提取和求和xml屬性值

[英]How to extract and sum xml attribute values in oracle sql developer

我有很多存儲在表online_messagexml_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM