通过select在oracle中提取xml参数的最佳方法
the best way to extract parameters of a xml in oracle through select
我在 xml oracle 中有一个目录,但作为结构的提取值 xml
例如;
<Estaciones>
<Estacion>
<Nombre>Primavera</Nombre>
<Inicia>Marzo</Inicia>
<Termina>Septiembre</Termina>
</Estacion>
</Estaciones>
等等所有季节
然后做一个select来比较每个inicioMes和结果站,
这是: TABLE (XMLSEQUENCE (EXTRACT ())) 我在 oracle xml 类型中提取了一个 table,但是作为提取参数,我认为使用 SELECT EXTRACTVALUE (),但它的结构。
由于要提取多组值,因此可以使用 XMLTable with a suitable XPath。从所提供的少量信息来看,这是一个起点:
select x.*
from <your_table> t
cross join xmltable ('/Estaciones/Estacion'
passing t.<your_xmltype_column>
columns nombre varchar2(9) path 'Nombre',
inicia varchar2(10) path 'Inicia',
termina varchar2(10) path 'Termina'
) x;
带有虚构的第二季的快速演示:
with t42 as (
select xmltype('<Estaciones>
<Estacion>
<Nombre>Primavera</Nombre>
<Inicia>Marzo</Inicia>
<Termina>Septiembre</Termina>
</Estacion>
<Estacion>
<Nombre>Otoño</Nombre>
<Inicia>Octubre</Inicia >
<Termina>Febrero</Termina>>
</Estacion>
</Estaciones>') as xml_col
from dual
)
select x.*
from t42 t
cross join xmltable ('/Estaciones/Estacion'
passing t.xml_col
columns nombre varchar2(9) path 'Nombre',
inicia varchar2(10) path 'Inicia',
termina varchar2(10) path 'Termina'
) x;
NOMBRE INICIA TERMINA
---------- ---------- ----------
Primavera Marzo Septiembre
Otoño Octubre Febrero
恐怕我不知道你问题的第二部分是什么意思,但这可能会让你上路。
我在 xml oracle 中有一个目录,但作为结构的提取值 xml 例如;
<Estaciones>
<Estacion>
<Nombre>Primavera</Nombre>
<Inicia>Marzo</Inicia>
<Termina>Septiembre</Termina>
</Estacion>
</Estaciones>
然后做一个select来比较每个inicioMes和结果站, 这是: TABLE (XMLSEQUENCE (EXTRACT ())) 我在 oracle xml 类型中提取了一个 table,但是作为提取参数,我认为使用 SELECT EXTRACTVALUE (),但它的结构。
由于要提取多组值,因此可以使用 XMLTable with a suitable XPath。从所提供的少量信息来看,这是一个起点:
select x.*
from <your_table> t
cross join xmltable ('/Estaciones/Estacion'
passing t.<your_xmltype_column>
columns nombre varchar2(9) path 'Nombre',
inicia varchar2(10) path 'Inicia',
termina varchar2(10) path 'Termina'
) x;
带有虚构的第二季的快速演示:
with t42 as (
select xmltype('<Estaciones>
<Estacion>
<Nombre>Primavera</Nombre>
<Inicia>Marzo</Inicia>
<Termina>Septiembre</Termina>
</Estacion>
<Estacion>
<Nombre>Otoño</Nombre>
<Inicia>Octubre</Inicia >
<Termina>Febrero</Termina>>
</Estacion>
</Estaciones>') as xml_col
from dual
)
select x.*
from t42 t
cross join xmltable ('/Estaciones/Estacion'
passing t.xml_col
columns nombre varchar2(9) path 'Nombre',
inicia varchar2(10) path 'Inicia',
termina varchar2(10) path 'Termina'
) x;
NOMBRE INICIA TERMINA
---------- ---------- ----------
Primavera Marzo Septiembre
Otoño Octubre Febrero
恐怕我不知道你问题的第二部分是什么意思,但这可能会让你上路。