【问题标题】:postgresql agg function that returns an array with single quotes around itemspostgresql agg 函数,它返回一个带有单引号的数组
【发布时间】:2018-02-08 19:26:38
【问题描述】:

我有一个非常简单的查询,它返回一个市政标识符数组,用逗号分隔它们,并在每个项目周围加上双引号。我希望能够用单引号将这些双引号括起来

select json_agg(ssn) from sde.muns

【问题讨论】:

  • 你能给出你预期的输出吗?
  • 这不是使 JSON 无效吗?还是您希望结果为字符串?
  • 只是在每个项目周围加上单引号。结果可以是字符串
  • 那不是数组。它是一个包含 json 数组的 json 对象。您是否正在寻找 string_agg()

标签: sql json postgresql


【解决方案1】:

假设你有:

t=# with c(v) as (select * from generate_series(1020,1029))
select json_agg(v::text) from c;
                                     json_agg
----------------------------------------------------------------------------------
 ["1020", "1021", "1022", "1023", "1024", "1025", "1026", "1027", "1028", "1029"]
(1 row)

所以你可以:

t=# with c(v) as (select * from generate_series(1020,1029))
select translate(json_agg(v::text)::text,'"',$$'$$) from c;
                                    translate
----------------------------------------------------------------------------------
 ['1020', '1021', '1022', '1023', '1024', '1025', '1026', '1027', '1028', '1029']
(1 row)

这当然不再是有效的 json。而且我假设你只能有数字,所以不需要注意意外的双引号

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多