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

PostgreSQL 9.6.1统计字符串格式JSON数组内JSON对象数量

统计PostgreSQL 9.6中字符串格式JSON数组的元素数量

嘿,针对你在PostgreSQL 9.6.1里统计字符串格式JSON数组元素数量的需求,我给你整理了两种实用的解决办法:

方法一:直接转换+内置函数统计

假设存储JSON字符串的字段名叫json_str_col,表为your_table,直接用下面的SQL就能拿到结果:

SELECT json_array_length(json_str_col::json) AS array_element_count
FROM your_table;

逻辑很直观:

  • json_str_col::json 先把字符串类型的内容强制转换成PostgreSQL能识别的JSON类型,它会自动解析你的字符串为JSON数组。
  • json_array_length() 是PostgreSQL 9.6已支持的内置函数,专门用来返回JSON数组里的元素个数,正好匹配你统计数组中JSON对象数量的需求。

方法二:兼容不规范的JSON格式(可选)

看你给的示例里,JSON数组最后一个对象后面多了个逗号——这类小瑕疵会导致JSON解析失败。如果你的数据里经常有这类格式问题,可以先清理再统计:

SELECT json_array_length(
    regexp_replace(json_str_col, ',\s*]$', ']')::json
) AS array_element_count
FROM your_table;

这个查询的额外处理:

  • regexp_replace(json_str_col, ',\s*]$', ']') 用正则表达式去掉数组末尾可能存在的多余逗号和空白字符,先把字符串修正为标准JSON格式。
  • 之后再转换成JSON类型,用同样的函数统计长度。

小提醒

  • 如果数据存在严重的JSON格式错误(比如缺失引号、括号不匹配),转换还是会失败,得先修复数据本身的格式问题。
  • 要是之后打算优化存储,可以考虑把字段类型改成jsonb(性能比json更好),到时候只需要把::json换成::jsonb,对应的统计函数换成jsonb_array_length()就行。

内容的提问来源于stack exchange,提问作者Marcus S.F.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:11:08