gpt4 book ai didi

postgresql - 如何控制 jsonb_object_agg 中字段的顺序

转载 作者:行者123 更新时间:2023-12-05 02:43:37 30 4
gpt4 key购买 nike

我正在尝试使用按字母顺序排列的键构建一个 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,我已经成功地做到了这一点,但键的顺序不是我需要的。

最佳答案

jsonb 以解析的形式存储数据,这使得访问其部分变得高效。结果,原始字符串的格式没有保留,属性的顺序也没有保留,你不能有重复的属性。所以你要求的是不可能的。

您可以使用 json 数据类型,它本质上是一个带有语法检查并保留原始顺序的字符串。

要在聚合期间建立顺序,请使用 json_agg(... ORDER BY ...)

关于postgresql - 如何控制 jsonb_object_agg 中字段的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66829778/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com