gpt4 book ai didi

xml - 如何在 PostgreSQL 中从 XML 查询兄弟节点

转载 作者:行者123 更新时间:2023-11-29 12:50:17 26 4
gpt4 key购买 nike

我在 PostgreSQL 的 my_tablesettings 列中存储了一些 XML。 XML 类似于:

<Dictionary>
<ExportValues>
<ReplacementSet>
<type>TEST_CODE</type>
<ReplacementPair>
<Input>A1</Input>
<Output>One</Output>
</ReplacementPair>
<ReplacementPair>
<Input>A2</Input>
<Output>Two</Output>
</ReplacementPair>
<ReplacementPair>
<Input>A3</Input>
<Output>Three</Output>
</ReplacementPair>
</ReplacementSet>
<ReplacementSet>
<type>TEST_TYPE</type>
<ReplacementPair>
<Input>MTL</Input>
<Output>Metal</Output>
</ReplacementPair>
<ReplacementPair>
<Input>LQD</Input>
<Output>Liquid</Output>
</ReplacementPair>
<ReplacementPair>
<Input>SLD</Input>
<Output>Solid</Output>
</ReplacementPair>
</ReplacementSet>
</ExportValues>
</Dictionary>

我正在尝试获得以下输出:

type, Input, Output
TEST_CODE, A1, One
TEST_CODE, A2, Two
TEST_CODE, A3, Three
TEST_TYPE, MTL, Metal
TEST_TYPE, LQD, Liquid
TEST_TYPE, SLD, Solid

我可以使用以下 SQL 从 type 节点获取值:

select xxx.*
from xmltable('/Dictionary/ExportValues/ReplacementSet'
passing xml((select settings
from my_table
limit 1))
columns replacement_value_type text path 'type') xxx

我可以使用以下 SQL 从 InputOutput 节点获取值:

select xxx.*
from xmltable('/Dictionary/ExportValues/ReplacementSet/ReplacementPair'
passing xml((select settings
from web_service
limit 1))
columns our_value text path 'OurValue',
their_value text path 'TheirValue') xxx

但是,我无法弄清楚如何从具有所有 InputOutput 节点的各个 type 节点中选择值ReplacementSet 节点中的值。

我尝试过的所有内容要么出错,包括type 值,但InputOutput 为空,或者类型输入输出节点的值。

最佳答案

这不是问题,但您必须明确指定“类型”列的 XPath:

select x.* 
from my_table,
xmltable('/Dictionary/ExportValues/ReplacementSet/ReplacementPair'
passing settings
columns
type text path '../type',
input text path 'Input',
output text path 'Output') x;

+-----------+-------+--------+
| type | input | output |
+-----------+-------+--------+
| TEST_CODE | A1 | One |
| TEST_CODE | A2 | Two |
| TEST_CODE | A3 | Three |
| TEST_TYPE | MTL | Metal |
| TEST_TYPE | LQD | Liquid |
| TEST_TYPE | SLD | Solid |
+-----------+-------+--------+
(6 rows)

关于xml - 如何在 PostgreSQL 中从 XML 查询兄弟节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55778582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com