小编Joh*_*ohn的帖子

Oracle 11g的XMLtable

这是一个示例表:

create table xmltemp (mydoc xmltype)
Run Code Online (Sandbox Code Playgroud)

这是一个小的xml doc:

insert into xmltemp values (
xmltype
('<?xml version="1.0"?>
<countries>
  <country>
    <name>Canada</name>
  </country>
  <country>
    <name>US</name>
    <states>
      <state>
        <name>Washington</name>
        <name>Oregon</name>        
      </state>
    </states>
  </country>
</countries>
')
)  
Run Code Online (Sandbox Code Playgroud)

请注意,加拿大没有"州"元素,但美国却有.我正在尝试获取这些查询结果(顺序和格式不重要):

Canada,
US,Washington
US,Oregon
Run Code Online (Sandbox Code Playgroud)

当我执行此操作时,我在结果中看到加拿大和美国:

select
countryname
from xmltemp,
xmltable('/countries/country' passing mydoc
   columns countryname varchar2(10) path 'name') 
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我得到两个状态:

select
statename
from xmltemp,
xmltable('/countries/country/states/state/name' passing mydoc
   columns statename   varchar2(20) path '.') c
Run Code Online (Sandbox Code Playgroud)

我试过这个以获得国家和州,但似乎oracle不喜欢'..'语法:

select
statename
from xmltemp,
xmltable('/countries/country/states/state/name' passing mydoc
   columns statename   varchar2(20) path '.',
           countryname varchar2(20) path '../../../name') …
Run Code Online (Sandbox Code Playgroud)

xml sql oracle xpath oracle11g

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

oracle ×1

oracle11g ×1

sql ×1

xml ×1

xpath ×1