You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中对字典格式字符串列的值求和方法咨询

PostgreSQL 提取自定义格式字符串中的数值并求和

针对你列中{string_one:1;string_two:2;string_three:3}这种格式的字符串,最优的求和方法是通过正则表达式提取所有数值,再聚合求和,以下是两种高效实现方式:

方法一:直接提取数字并求和

利用regexp_matches全局匹配所有数字,再通过unnest展开结果并求和:

SELECT sum((unnest(regexp_matches(data_col, '\d+', 'g')))::integer) AS total_sum
FROM your_table_name;
  • regexp_matches(..., '\d+', 'g'):全局匹配字符串中所有连续数字,返回包含数字文本的数组
  • unnest:将数组转换为行数据
  • 转换为integer类型后用sum完成求和

方法二:清理字符串后转数组求和

先移除字符串中非数字和非分号的字符,再拆分数组求和:

SELECT sum(elem::integer) AS total_sum
FROM your_table_name,
     unnest(string_to_array(regexp_replace(data_col, '[^\d;]', '', 'g'), ';')) AS elem
WHERE elem <> '';
  • regexp_replace(..., '[^\d;]', '', 'g'):移除所有非数字、非分号的字符,得到1;2;3格式的字符串
  • string_to_array:将处理后的字符串按分号拆分为数组
  • unnest展开后过滤空值(避免格式异常导致的错误),最后求和

两种方法中,方法一更简洁高效,因为它直接定位目标数字,无需额外的字符串清理和空值过滤步骤,适合你给出的标准格式场景。

内容的提问来源于stack exchange,提问作者ARC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 16:18:20