我在 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?
非常感谢您的帮助!
您可以将
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
也会最终出现畸形。