用PostgreSQL提取xml元素的唯一属性

问题描述 投票:0回答:1

在PostgreSQL数据库中提供此xml数据类型:

<parent>
  <boy age="12">Joe</child>
  <boy age="13">John</child>
  <boy age="12">Jimmy</child>
  <girl age="13">John</child>
  <girl age="11">Jimmy</child>

</parent>

如何提取所有子元素的唯一属性?

这是我到目前为止所做的:SELECT unnest(xpath('(//boy|girl)/@age', col_name)) from table;

它返回此:

unnest
12
13
12
13
11

我只想返回11,12,13。因此,我的下一步是尝试DISTINCT。我搜寻了互联网并尝试了一些方法,但是它似乎没有用:

方法1SELECT DISTINCT unnest(xpath('(//boy|girl)/@age', col_name)) from table;我收到此错误:无法为类型xml确定相等运算符

[方法2-使用子查询-我认为这应该是答案。我运行一个查询,该查询返回所有属性的表。然后,我在该表上运行select select,如下所示:SELECT DISTINCT * from (SELECT unnest(xpath('(//a|b|c)/@z', data)) from test3) as x;

我仍然收到相同的错误,无法识别xml类型的相等运算符

我也尝试过:SELECT DISTINCT x from (SELECT unnest(xpath('(//a|b|c)/@z', data)) from test3) as x;

我无法识别类型为xml的比较函数。

感谢任何帮助!

xml postgresql
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.