PostgreSQL XPath 中是否实现了 XPath sum 或 fn:sum 函数?

2024-03-03

我正在使用 PostgreSQL 8.4XPath(XML 函数)特征。这是文档中找到的改编示例:

SELECT xpath('/my:a/value[.>15]',
'<my:a xmlns:my="http://example.com">
<value>20</value>
<value>10</value>
<value>30</value>
</my:a>',
ARRAY[ARRAY['my', 'http://example.com']]);

这工作正常,它返回正确过滤的节点列表“值>15”健康)状况:

xpath  
xml[]  
---------------------------------------  
"{<value>20</value>,<value>30</value>}"

但是当我尝试使用"sum"它返回一个空列表而不是标量值:

SELECT xpath('sum(/my:a/value[.>15])',  
...

result:

xpath  
xml[]  
-----  
"{}"

有什么建议么?

胡安·费雷拉


我偶然发现了同样的问题,我很高兴为该问题添加另一个答案:

在 PostgreSQL 9.2 中,文档突然多了一句涉及 xpath 函数的内容:

如果 XPath 表达式返回标量值而不是节点集, 返回一个单元素数组。

正是我需要的!因此,对于这个问题,另一个有效的答案是:升级到 PostgreSQL 9.2。在撰写本文时,9.2 版本只是测试版,但我可以确认它是有效的:

版本详情

postgres=# select version();
                                                     version                                                      
------------------------------------------------------------------------------------------------------------------
 PostgreSQL 9.2beta1 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-52), 64-bit
(1 row)

解决方案演示

(这个演示是用Postgre 9.5做的,因为原来我粘贴了错误的代码)

postgres=# SELECT xpath('sum(/my:a/value[.>15])', '<my:a xmlns:my="http://example.com">
postgres'# <value>20</value>
postgres'# <value>10</value>
postgres'# <value>30</value>
postgres'# </my:a>',
postgres(# ARRAY[ARRAY['my', 'http://example.com']]);
 xpath 
-------
 {50}
(1 row)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PostgreSQL XPath 中是否实现了 XPath sum 或 fn:sum 函数? 的相关文章

  • 在 Postgres 中将数组转换为行

    如果我在 SQL 语句中有类似的内容 A B C 如何将其转换为具有多行的列 如下所示 col A B C 我无法更改该字符串的创建方式 因为它是从外部程序注入到 SQL 查询中的 例如 我不能将其作为 A B C 用方括号替换 我可以把任
  • 错误:查询没有结果数据的目标

    CREATE OR REPLACE FUNCTION chkLogin userid varchar pwd varchar RETURNS BOOLEAN AS BODY DECLARE passed BOOLEAN BEGIN SELE
  • 如何从xml中的另一个包加载资源?

    我知道可以使用如下代码从另一个包安装资源 xml 文件 String resourceName getResources getResourceEntryName layoutResID String resourceTypeName ge
  • 如何查找给定日期范围内的列总和,其中表只有开始日期和结束日期

    我有一个像这样的 postgresql 表 userDistributions user id start date end date project id distribution 我需要编写一个查询 其中给定的日期范围和用户 ID 的输
  • 当我加入第二个表时总和不正确

    这是我第一次请求你的帮助 实际上我必须创建一个查询 并为其做了一个类似的示例 我有两张桌子 Report ReportID Date headCount Production ProdID ReportID Quantity 我的问题是使用
  • 根据 Web.config Transform 中的子节点值选择节点

    我的 Web 配置中有以下 XML 我想使用 web config 转换选择要删除的属性 但我想根据其中一个子元素的值选择要删除的元素 我的 web config 是这样的
  • SQL 中的双冒号 `::` 表示法

    我捡到了某人的代码 以下是其中的一部分WHERE条款 这里的双冒号表示什么 b date completed gt a dc date INTERVAL 1 DAY 7 20 00 它根据 RDBMS 的不同而有所不同 但如果我猜对的话 那
  • Hstore 和 Rails

    我正在尝试使用最新版本的 activerecord postgres hstore gem 在 Rails 3 2 9 项目中使用 Hstore 但在使用 ActiveRecord 提供的 store accessor 来获取 Hstore
  • postgres union 是否保证调用有副作用的函数时的执行顺序?

    我正在使用 postgres 9 3 并尝试确保从 sql 语句调用时按顺序调用存储过程 以下操作是否有效 确保首先调用 foo 然后调用 bar select null void from select 1 from foo union
  • 用户 postgres 启动进程使所有 CPU 达到 100% 使用率

    用户 postgres 正在运行一个进程 该进程在 centos 机器上以 100 使用率占用所有 CPU postgresql 服务未运行 因此它不能是查询 当我尝试停止该进程时 它会自行重新启动 然后进程的名字就有点奇怪了 恭喜 通过将
  • Golang xml.Unmarshal 接口类型

    使用xml我在解组非同质类型列表时遇到问题 考虑以下 XML 文档 其嵌套元素是非同质类型的列表
  • 将多个 CSV 文件复制到 postgres

    我正在编写一个 SQL 脚本来将多个 CSV 文件复制到 postgres 数据库中 如下所示 COPY product title department from ys csv CSV HEADER 我有多个文件想要复制 我不想要 COP
  • 硒找不到元素

    我在访问元素时遇到问题 fieldset legend Legend1 legend table width 100 quot cellspacing 3 tbody tr tr tr tr tbody table fieldset leg
  • 显示 python 的 XML 解析器加载大文件时的进度

    我使用 Python 内置的 XML 解析器来加载 1 5 gig XML 文件 这需要一整天的时间 from xml dom import minidom xmldoc minidom parse events xml 我需要知道如何进入
  • pgadmin4 : 无法联系 postgresql 应用程序服务器。

    我在 Windows 8 1 上安装了 PostgreSQL 9 6 2 但 pgadmin4 无法联系本地服务器 我尝试了 stackoverflow 中建议的几种解决方案 尝试卸载并重新安装 PostgreSQL 9 6 2 尝试修改
  • 如何让Python bs4在XML上正常工作?

    我正在尝试使用 Python 和 BeautifulSoup 4 bs4 将 Inkscape SVG 转换为某些专有软件的类似 XML 的格式 我似乎无法让 bs4 正确解析一个最小的示例 我需要解析器尊重自闭标签 处理 unicode
  • 使用 LINQ XML 绑定组合框

    请原谅我的英语不好 那不是我的母语 我是 WPF 和 LINQ 的初学者 从 3 天开始 也是 C 的临时用户 昨天 我一整天都在尝试解决我的问题并阅读了一些文档 但我的代码中的错误仍然存 在 我将 XElement 传递给绑定其内容的控件
  • 查找分区内最大的连续数字组

    我有以下按player id 和match date 排序的数据 我想找出连续运行次数最多的记录组 从2014 04 03到2014 04 12连续3次运行4次 player id match date runs 1 2014 04 01
  • Spring中需要多个相同类型的bean

    将其标记为重复之前的请求 我浏览了论坛 但在任何地方都找不到该问题的解决方案 我正在使用 Spring 3 2 编写代码 一切都是纯粹基于注释的 该代码接收从不同 XSD 文件派生的 XML 文件 所以我们可以说 有五个不同的 XSD A1
  • 在 Swift 4 IOS 中将 XML 数据获取到 String 中

    我有一个 XML 字符串格式 我想使用 Swift 4 从它获取单个值到字符串变量 我的数据如下 let myString Adasdnajinasdshabjdbaiusd Encrypted Text Sample let MyResu

随机推荐