【发布时间】:2021-03-27 09:26:14
【问题描述】:
我正在尝试使用按字母顺序排列的键构建一个 jsonb 对象。
但是,jsonb_object_agg(k, v) 似乎忽略了输入的顺序,并按键长度对输入进行排序,然后按字母顺序。
例如
select jsonb_object_agg(k, v order by k) from (
values ('b', 'b_something'), ('ab', 'ab_something')
) as t (k,v)
给予
{
"b": "b_something",
"ab": "ab_something"
}
但我需要的是
{
"ab": "ab_something"
"b": "b_something",
}
有没有办法做到这一点?
上下文 我正在展平一个 json 列,其中的内容遵循统一但笨拙的模式。感谢this useful answer,我成功地做到了,但键的顺序不是我需要的。
【问题讨论】:
-
"By contrast,
jsonbdoes not preserve white space, does not preserve the order of object keys, and does not keep duplicate object keys." 因此,如果您想保留键的顺序,请改用json_object_agg()。
标签: postgresql aggregate-functions postgresql-10