gpt4 book ai didi

postgresql - jsonb 转换为文本是确定性的吗?

转载 作者:行者123 更新时间:2023-11-29 12:23:13 24 4
gpt4 key购买 nike

这是一个过长的 question 的简短版本遗憾的是,没有人回答。

给定两个 jsonb 变量 x 和 y,是否有可能同时拥有这两个变量
1. (x = y) yield true, 并且
2. (x::text = y::text) yield false

我问这个问题是因为似乎没有 promise 的顺序将 jsonb 对象解压缩到字符串中。我只想确定情况确实如此。

提前感谢您的反馈!

编辑:

最初的问题涵盖了这个问题的“为什么”,但最简单的是我希望根据表示为文本的许多列的散列将不同行中的数据分组,其中一些是 jsonb。

我不关心对象以何种方式进入或以何种方式解包,但我关心两个与 jsonb 等效的 jsonb 字段是否与文本字符串等效。

因为它似乎我不能指望以相同的方式呈现文本表示,我已经将 jsonb 字段标准化为一个单独的表,并将 jsonb 字段设置为唯一索引。

如果我在这里写更多......这个问题将接近它派生的问题的长度!

最佳答案

由于 JSON object definition: 的缘故,顺序不是确定性的

An object is an unordered set of name/value pairs.

实际上,对象似乎是按键的长度排序,然后按字母顺序排序:

with example(col) as (
values
('{"cc": 1, "ab": 1, "a": 1, "aa": 1, "b": 2, "abc": 1}'::jsonb)
)

select col::text
from example

col
-------------------------------------------------------
{"a": 1, "b": 2, "aa": 1, "ab": 1, "cc": 1, "abc": 1}
(1 row)

请注意,此行为未记录在案,可能会在未来的版本中更改(尽管看起来不太可能)。

关于postgresql - jsonb 转换为文本是确定性的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58531362/

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