我可以使用to_json(1)
将整数转换为JSON,但是如何将JSON转换为整数?这可能会太慢:
to_json(1)::text::int
另外,json是由二进制块(bson)包装还是简单的文本包装?
我可以使用to_json(1)
将整数转换为JSON,但是如何将JSON转换为整数?这可能会太慢:
to_json(1)::text::int
另外,json是由二进制块(bson)包装还是简单的文本包装?
对我有效的方法(使用postgresql 5.6)是:
SELECT (tablename.jsoncolumnname->>'jsonfiledname')::int FROM tablename;
喜欢
SELECT (users.data->>'failed_login_attempts_count')::int FROM users;
假设 users
表中有一个名为 data
的 json 列,其内容类似于:
{"failed_login_attempts_count":"2","comment":"VIP"}
(ta.args ->> 'deposit')::bigint
seemed like it was going to work, but I got ERROR: value "1830000000000000000000" is out of range for type bigint
- Ryanto_json(1)::text::int可能太慢了
但是这是唯一的方法。
你提问的第二部分不太清楚。
PostgreSQL 9.3的JSON支持只是验证JSON文本。
在9.4及更高版本中,您可以使用jsonb。
“可能太慢”并没有太多意义。您为什么认为它太慢?您进行过测试和基准测试吗?如果它“太慢”,那么什么速度不会太慢,即您期望的速度是多少?
jsonb
。它是否支持直接从 json 中提取整数? - Tom Ellis