Xml SQL XPath查询
给定以下XML数据结构:Xml SQL XPath查询,xml,oracle,xpath,Xml,Oracle,Xpath,给定以下XML数据结构: <root> <a attr="abcd"> <b> test1</b> <b> test2 </b> <b> test3 </b> </a> <a attr="zyx"> <b> test1 </b> <b> test2 </b> <b> test3 </b> <
<root>
<a attr="abcd">
<b> test1</b>
<b> test2 </b>
<b> test3 </b>
</a>
<a attr="zyx">
<b> test1 </b>
<b> test2 </b>
<b> test3 </b>
</a>
<a attr="gjui">
<b>test1 </b>
</a>
</root>
我遇到的问题是,根有多个孩子
SELECT xtab.my_attr, xtab.my_attr_values
FROM my_table jx, xmltable('/root/a'
PASSING jx.field_xml
COLUMNS my_attr path '@attr',
my_attr_values path '/a/b')xtab;
返回
abcd NULL
zyx NULL
gjui test1
遍历子节点并拉入子节点的父节点解决了此问题
SELECT xtab.my_attr, xtab.my_attr_values
FROM my_table jx, xmltable('for $i in /root/a/b
return element r {
$i/../@attr,
$i/.
}'
PASSING jx.field_xml
COLUMNS my_attr path '@attr',
my_attr_values path 'b')xtab;
这甚至不是有效的XML。请使用正确的示例更新。请参阅
SELECT xtab.my_attr, xtab.my_attr_values
FROM my_table jx, xmltable('for $i in /root/a/b
return element r {
$i/../@attr,
$i/.
}'
PASSING jx.field_xml
COLUMNS my_attr path '@attr',
my_attr_values path 'b')xtab;