你能幫我解決以下問題嗎?我只需要一個 person_number 一次,例如。1000142 但我得到 10001421000142 像這樣。
因為我在 xml 單元格中的值有重復的數字,所以我只想提取一個唯一的人號。
select xmltype( '<?xml version="1.0"?>
<ROWSET>
<ROW> <PERSON_NUMBER>1000142</PERSON_NUMBER> <LOAN_1>25000</LOAN_1> <LOAN_2>26000</LOAN_2> </ROW>
<ROW> <PERSON_NUMBER>1000142</PERSON_NUMBER> <LOAN_1>25000</LOAN_1> <LOAN_2>26000</LOAN_2> </ROW>
</ROWSET>').extract( '//PERSON_NUMBER[1]/text()' ) .getstringval() p# from dual;
uj5u.com熱心網友回復:
正如我在您作為上一個問題的后續問題提出時所評論的那樣,請使用 XPATH:
/ROWSET/ROW[1]/PERSON_NUMBER/text()
然后:
select xmltype(
'<?xml version="1.0"?>
<ROWSET>
<ROW>
<PERSON_NUMBER>1000142</PERSON_NUMBER>
<LOAN_1>25000</LOAN_1>
<LOAN_2>26000</LOAN_2>
</ROW>
<ROW>
<PERSON_NUMBER>1000142</PERSON_NUMBER>
<LOAN_1>25000</LOAN_1>
<LOAN_2>26000</LOAN_2>
</ROW>
</ROWSET>'
).extract( '/ROWSET/ROW[1]/PERSON_NUMBER/text()' ) .getstringval() p#
from dual;
輸出:
## 1000142
如果您確實想提取所有PERSON_NUMBER值然后只找到DISTINCT那些值,那么您可以使用:
SELECT DISTINCT p#
from XMLTABLE(
'/ROWSET/ROW'
PASSING xmltype(
'<?xml version="1.0"?>
<ROWSET>
<ROW>
<PERSON_NUMBER>1000142</PERSON_NUMBER>
<LOAN_1>25000</LOAN_1>
<LOAN_2>26000</LOAN_2>
</ROW>
<ROW>
<PERSON_NUMBER>1000142</PERSON_NUMBER>
<LOAN_1>25000</LOAN_1>
<LOAN_2>26000</LOAN_2>
</ROW>
</ROWSET>'
)
COLUMNS
p# NUMBER PATH './PERSON_NUMBER'
);
其中,對于樣本資料輸出與上述相同。
db<>在這里擺弄
uj5u.com熱心網友回復:
你也可以使用這樣的東西:
WITH tbl AS
(
SELECT XMLTYPE(
'<?xml version="1.0"?>
<ROWSET>
<ROW> <PERSON_NUMBER>1000142</PERSON_NUMBER> <LOAN_1>25000</LOAN_1> <LOAN_2>26000</LOAN_2> </ROW>
<ROW> <PERSON_NUMBER>1000142</PERSON_NUMBER> <LOAN_1>25000</LOAN_1> <LOAN_2>26000</LOAN_2> </ROW>
</ROWSET>'
) xmldata
FROM dual
)
SELECT node_name, node_value
FROM tbl
, XMLTABLE('//*'
PASSING tbl.xmldata
COLUMNS node_name VARCHAR2(100) path 'name()'
, node_value VARCHAR2(400) path 'text()')
WHERE node_name = 'PERSON_NUMBER';
uj5u.com熱心網友回復:
如果您只想要第一行中的人員編號,那么您的 XPath 應該是:
'/ROWSET/ROW[1]/PERSON_NUMBER/text()'
而不是PERSON_NUMBER從每個ROW.
如果您的 XML 可以有多個不同的人員編號,其中部分或全部重復,則使用 XMLTable 獲取所有這些人員編號,然后獲取不同的值:
select distinct x.person_number
from xmltable(
'/ROWSET/ROW'
passing xmltype( '<?xml version="1.0"?>
<ROWSET>
<ROW> <PERSON_NUMBER>1000142</PERSON_NUMBER> <LOAN_1>25000</LOAN_1> <LOAN_2>26000</LOAN_2> </ROW>
<ROW> <PERSON_NUMBER>1000142</PERSON_NUMBER> <LOAN_1>25000</LOAN_1> <LOAN_2>26000</LOAN_2> </ROW>
</ROWSET>')
columns person_number number path 'PERSON_NUMBER'
) x
db<>小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/478828.html
標籤:甲骨文
