【发布时间】:2021-01-11 17:23:10
【问题描述】:
所以我的问题是我在 PostgreSQL 中存储 JSON 文档,它们有时包含非常小的十进制数。
我在网上读到,在使用 JSONB、PostgreSQL 时,不要愚蠢地保存表示数字的文本,而是在内部使用数字类型。这对我来说很好。
问题是我丢失了将数据发送到 PostgreSQL 时使用的科学记数法。 如果 PostgreSQL 在序列化数字时很聪明,并且在十进制记数法导致使用太多零时使用科学记数法,这对我来说不会有太大问题。
test=# CREATE TABLE json (value JSONB);
CREATE TABLE
test=# INSERT INTO json VALUES ('1E-120');
INSERT 0 1
test=# INSERT INTO json VALUES ('"toto"');
INSERT 0 1
test=# select * from json;
value
----------------------------------------------------------------------------------------------------------------------------
0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
"toto"
test=#
我希望在运行我的选择时拥有什么:
1E-120
"toto"
我认为这是有问题的,因为我的代码将 JSON 反序列化为解析数字的字符数的限制。而且我也认为这非常低效。
(一种解决方案是切换到 JSON 而不是 JSONB,但这样做我将失去所有 JSONB 的好处)
【问题讨论】:
标签: json postgresql