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

如何将PostgreSQL中real[]类型数组导出为完整浮点数值?

解决PostgreSQL real[]列导出时科学计数法转普通浮点格式的问题

核心思路

real类型直接转文本会自动用科学计数法表示大数,需要逐个处理数组元素:先展开数组,将每个real值格式化为非科学计数法的字符串,再重新组合成目标格式。

具体实现

结合你的现有SQL逻辑,修改后的代码如下:

CASE 
  WHEN z > 16 THEN 
    '{\"cityJson\" :' || cityjsonfeature::TEXT || ', \"metadata\" : {' || 
    '\"translate\":{' || 
      -- 处理translate数组:展开后逐个格式化再拼接
      (SELECT string_agg(to_char(elem, 'FM999999999999.999999'), ',') 
       FROM unnest(m.translate) AS elem) || 
    '},\"scale\":{' || 
      -- 处理scale数组:套用相同格式化逻辑
      (SELECT string_agg(to_char(elem, 'FM999999999999.999999'), ',') 
       FROM unnest(m.scale) AS elem) || 
    '}}' 
  ELSE NULL 
END AS cityjson,

关键细节说明

  • unnest(m.translate):将数组展开为单行多值的结果集,方便逐个处理元素。
  • to_char(elem, 'FM999999999999.999999'):用格式化函数转换real值,FM去除多余前导空格,999999999999定义整数部分最大位数,.999999保留6位小数(可按需调整位数)。
  • string_agg(..., ','):将格式化后的元素重新拼接为逗号分隔的字符串,替代原数组默认的科学计数法格式。

可选格式调整

如果需要保留原数组的{}包裹样式,可在string_agg结果前后添加符号:

'\"translate\":{' || 
  (SELECT '{' || string_agg(to_char(elem, 'FM999999999999.999999'), ',') || '}' 
   FROM unnest(m.translate) AS elem) || 
'},'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 03:57:03