我有以下 XML 结构:
I have the following XML structure:
<root>
<parent>
<parent_id>1</parent_id>
<parent_value>10000</parent_value>
<child>
<child_id>11</child_id>
<other_value>1000</other_value>
</child>
<child>
<child_id>12</child_id>
<other_value>1000</other_value>
</child>
</parent>
</root>
预期输出:
CHILD_ID PARENT_VALUE
---------- ------------
11 10000
12 10000
我尝试过的:
WITH xtbl AS (SELECT xmltype ('<root>
<parent>
<parent_id>1</parent_id>
<parent_value>10000</parent_value>
<child>
<child_id>11</child_id>
<other_value>1000</other_value>
</child>
<child>
<child_id>12</child_id>
<other_value>1000</other_value>
</child>
</parent>
</root>') AS xcol FROM dual)
SELECT myXmlTable.*
FROM xtbl
CROSS JOIN
xmltable ('/root/parent/child'
PASSING xcol
COLUMNS child_id NUMBER (5) PATH 'child_id',
parent_value NUMBER (10) PATH './parent_value') myXmlTable;
我的查询的问题是 parent_value 为空.请帮忙.
Problem with my query is that parent_value comes to be null. Please help.
您正在寻找./parent_node,它是一个 下 当前 节点.而那是不存在的.
You are looking for ./parent_node, which is a <parent_node> under the current <child> node. And that doesn't exist.
你只需要提升一个层次:
You just need to go up a level:
parent_value NUMBER (10) PATH './../parent_value'
使用您的 CTE 进行演示并添加 ../:
Demo with your CTE and just that added ../:
WITH xtbl AS (SELECT xmltype ('<root>
<parent>
<parent_id>1</parent_id>
<parent_value>10000</parent_value>
<child>
<child_id>11</child_id>
<other_value>1000</other_value>
</child>
<child>
<child_id>12</child_id>
<other_value>1000</other_value>
</child>
</parent>
</root>') AS xcol FROM dual)
SELECT myXmlTable.*
FROM xtbl
CROSS JOIN
xmltable ('/root/parent/child'
PASSING xcol
COLUMNS child_id NUMBER (5) PATH 'child_id',
parent_value NUMBER (10) PATH './../parent_value') myXmlTable;
CHILD_ID PARENT_VALUE
---------- ------------
11 10000
12 10000
这篇关于Oracle XMLTable-从父节点获取列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
有没有办法使用 SQL 获取有关服务器的信息Is there a way to get information about a server using SQL(有没有办法使用 SQL 获取有关服务器的信息)
选择 SQL 查询以从 ntext 列中获取 xml 节点值?Select SQL Query to get xml node values from ntext column?(选择 SQL 查询以从 ntext 列中获取 xml 节点值?)
如何在 Oracle 中通过 XPath 获取第一个元素How to get first element by XPath in Oracle(如何在 Oracle 中通过 XPath 获取第一个元素)
在 SQL Server 中选择 XML 元素Select XML element in SQL Server(在 SQL Server 中选择 XML 元素)
在 SQL Server XPath 中获取跟随兄弟Get followin sibling in SQL Server XPath(在 SQL Server XPath 中获取跟随兄弟)
来自一个透视表的 SQL FOR XML 多级SQL FOR XML multilevel from one pivoted table(来自一个透视表的 SQL FOR XML 多级)