[英]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.