小编WAr*_*old的帖子

PostgreSQL jsonb[] 字段中的负值“-0.0”

我有一个“问题”(可能来自我对 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

8
推荐指数
1
解决办法
133
查看次数

标签 统计

postgresql ×1