从 postgres 返回 real[] 数组作为完整浮点值

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

我在 postgres 中有一个表,其中有一列包含真实的[]条目。

我需要将这些值导出为如下文本:

      CASE WHEN z > 16 THEN '{"cityJson" :' ||  cityjsonfeature::TEXT || ', "metadata" : {' || '"translate:"'||'{' ||   m.translate  ||'},'|| '"scale:"'||'{' ||   m.scale  ||'}' '}' ELSE NULL END AS cityjson,

这里的问题是,我没有得到完整的值,但它看起来像这样:

{98.016,1.3326125e+06,6.7176775e+06}

有没有什么方法可以获取没有 e+06 的值,而是作为完整的浮点值?比如1332612.5?

非常感谢您的帮助!

postgresql
1个回答
0
投票

您可以将

real[]
投射到
float[]
:

CASE WHEN z > 16 THEN concat('{"cityJson" :', cityjsonfeature::TEXT,
                             ', "metadata" : {', 
                             '"translate:"','{', m.translate::float[]::text,'},',
                             '"scale:"','{', m.scale ,'}')
                 ELSE NULL 
END AS cityjson,

这正是它要做的:演示

select ('{98.016,1.3326125e+06,6.7176775e+06}'::real[])::float[];
浮动8
{98.01599884033203,1332612.5,6717677.5}

请注意,该数组的文本表示形式将不遵循 JSON 数组语法。

{
适用于 JSON 对象,而不是数组。您还可以将它们添加到大括号的顶部,这些大括号将与文本表示一起出现,这会进一步破坏事情。由于同样的原因,您的
scale
也会最终出现畸形。

© www.soinside.com 2019 - 2024. All rights reserved.