簡體   English   中英

我需要有關xpath表達式的幫助以獲取價值

[英]I need help on xpath expression for getting the value

我有一個查詢,如下所示,我需要在Ex下獲取一列及其值。 第一個值為XML中的AR_GROUP_EMAIL_ID。

我無法弄清楚什么應該是xpath表達式。

      select a.* from  (select  prf_code_xml    from myxmltab )  xmltab       
       ,  XMLTable(
       '/PivotSet'
       passing xmltab.prf_code_xml 
                 columns
       prf_Code  varchar2(20) path  '/PivotSet/item/column[1]'
      ) a

XML:

<PivotSet>
    <item>
        <column name="PRF_CODE">AR_GROUP_EMAIL_ID</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">AUTO_ASN_RECEIVE</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">AUTO_EMAIL_PREF</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">AUTO_INVOICE_PREF</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">BOLT_GL_ENABLED</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">CALC_AUTO_FREIGHT</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">CHECK_PO_VENDOR</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">DISTR_SYNC</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">ENG_VAL</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">FA-ENABLED</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">FA_CREATE_USER</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">FA_DELAY_TIME</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">FREIGHT_ON_BO</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">IQA-RA_ENABLED</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">IQA_SENDER</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">IQA_TARGET</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">IQA_WAIT_TIME</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">ONESOURCE_ENABLED</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">ORDER_UPDATE</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">PO_SHIP_VIA_LOV_CHECK</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">PRODWISE_SUGG_ORDERS</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">QSSM_ASSET</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">QSSM_CONTACT</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">QSSM_CUST_SITE</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">QSSM_RESP_TIMEOUT</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">QSSM_SENDER_ID</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">QSSM_SERV_WO</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">RDC_ENABLED</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">REP60_OP_PATH</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">REP_PATH</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">RPT_URL</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">SENDER_ID</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">SPECIAL_SHIP</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">SPR_MONTHS</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">TARGET_ID</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">TRIM_SCANNER_SPACES</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">UPDATE_OE</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">VENDOR_LOV_CHECK</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">WO_REPORT_FILLER</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
    <item>
        <column name="PRF_CODE">WO_RPT_PRINT_TC</column>
        <column name="COUNT(PRF_CODE)">1</column>
    </item>
</PivotSet>

您需要XPath中的item節點:

select a.prf_code
from myxmltab
cross join XMLTable('/PivotSet/item'
  passing myxmltab.prf_code_xml
  columns prf_Code varchar2(20) path 'column[1]'
) a;

PRF_CODE           
--------------------
AR_GROUP_EMAIL_ID   
AUTO_ASN_RECEIVE    
AUTO_EMAIL_PREF     
AUTO_INVOICE_PREF   
...

我將多余的內聯視圖簡化了一下。 而且,您不必使用列名順序總是相同(盡管這可能是一個有效的假設),而可以使用列名:

  columns prf_Code varchar2(20) path 'column[@name="PRF_CODE"]'

如果您希望這兩列都可以添加第二個術語:

select a.prf_code, a.quantity
from myxmltab
cross join XMLTable('/PivotSet/item'
  passing myxmltab.prf_code_xml
  columns prf_Code varchar2(20) path 'column[@name="PRF_CODE"]',
    quantity number path 'column[@name="COUNT(PRF_CODE)"]'
) a;

PRF_CODE               QUANTITY
-------------------- ----------
AR_GROUP_EMAIL_ID             1
AUTO_ASN_RECEIVE              1
AUTO_EMAIL_PREF               1
AUTO_INVOICE_PREF             1
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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