我有一个“问题”(可能来自我对 json、jsonb 和 jsonb[] 类型的理解)如下:
我和我的团队将 3D 坐标记录插入到列类型为 的表中jsonb[]。
该表包含一个 id 列,该列基于记录的文本表示形式。也就是说,当我从表中选择一些数据时,所有包含坐标值等于-0.0(位符号打开)的记录,我得到的数据不包含减号。-0.0 -> 0.0。
我知道关于浮点数的 IEEE754 RFC(以及比较部分),我想知道 Postgres 如何处理 jsonb 数组内的元素?插入数据时是否会即时进行转换/转换。有没有办法阻止这种行为?
最小可重现代码:
CREATE TABLE IF NOT EXISTS "my_test_table" (
coordinates jsonb[]
);
TRUNCATE TABLE "my_test_table";
INSERT INTO
"public"."my_test_table" ("coordinates")
VALUES (
ARRAY[jsonb_build_array(-0.0, 0.0,0.0)]::jsonb[]
);
select * from my_test_table;
Run Code Online (Sandbox Code Playgroud)
输出是:
{"[0.0, 0.0, 0.0]"}
Run Code Online (Sandbox Code Playgroud)
当人们期望:
{"[-0.0, 0.0, 0.0]"}
Run Code Online (Sandbox Code Playgroud) postgresql ×1