从 xmlns oracle 中提取值
extractvalue from xmlns oracle
此代码 return 为空,我如何从句号中提取 012019-122019
?
with qwe as (
select xmltype('<singleAggregatePaymentResponse xmlns:ns7="http://www.mtszn.kz/services/PersonCotracts/schemas">
<ns7:isEspPayer xmlns="http://www.mtszn.kz/services/PersonCotracts/schemas">true</ns7:isEspPayer>
<ns7:periods xmlns="http://www.mtszn.kz/services/PersonCotracts/schemas">
<period>122019</period>
<period>112019</period>
<period>102019</period>
<period>092019</period>
<period>082019</period>
<period>072019</period>
<period>062019</period>
<period>052019</period>
<period>042019</period>
<period>032019</period>
<period>022019</period>
<period>012019</period>
</ns7:periods>
</singleAggregatePaymentResponse>')xml
from dual
)
select
extractvalue(value(x101_1),'/period') iou,
xml
from qwe q,
table(xmlsequence(q.xml.extract('//period')))(+) x101_1
extractvalue 和 xmlsequence 均已弃用。
您可以改用 xmltable 执行此操作:
select x.period
from qwe q
cross join xmltable(
xmlnamespaces(default 'http://www.mtszn.kz/services/PersonCotracts/schemas'),
'//period'
passing q.xml
columns period varchar2(6) path '.'
) x;
由于您的 XML 只有一个命名空间,我已将其声明为默认命名空间。不止一个,或者如果你喜欢它,你可以命名它:
select x.period
from qwe q
cross join xmltable(
xmlnamespaces('http://www.mtszn.kz/services/PersonCotracts/schemas' as "ns7"),
'//ns7:period'
passing q.xml
columns period varchar2(6) path '.'
) x;
此代码 return 为空,我如何从句号中提取 012019-122019
?
with qwe as (
select xmltype('<singleAggregatePaymentResponse xmlns:ns7="http://www.mtszn.kz/services/PersonCotracts/schemas">
<ns7:isEspPayer xmlns="http://www.mtszn.kz/services/PersonCotracts/schemas">true</ns7:isEspPayer>
<ns7:periods xmlns="http://www.mtszn.kz/services/PersonCotracts/schemas">
<period>122019</period>
<period>112019</period>
<period>102019</period>
<period>092019</period>
<period>082019</period>
<period>072019</period>
<period>062019</period>
<period>052019</period>
<period>042019</period>
<period>032019</period>
<period>022019</period>
<period>012019</period>
</ns7:periods>
</singleAggregatePaymentResponse>')xml
from dual
)
select
extractvalue(value(x101_1),'/period') iou,
xml
from qwe q,
table(xmlsequence(q.xml.extract('//period')))(+) x101_1
extractvalue 和 xmlsequence 均已弃用。
您可以改用 xmltable 执行此操作:
select x.period
from qwe q
cross join xmltable(
xmlnamespaces(default 'http://www.mtszn.kz/services/PersonCotracts/schemas'),
'//period'
passing q.xml
columns period varchar2(6) path '.'
) x;
由于您的 XML 只有一个命名空间,我已将其声明为默认命名空间。不止一个,或者如果你喜欢它,你可以命名它:
select x.period
from qwe q
cross join xmltable(
xmlnamespaces('http://www.mtszn.kz/services/PersonCotracts/schemas' as "ns7"),
'//ns7:period'
passing q.xml
columns period varchar2(6) path '.'
) x;