admin

如何将PostgreSQL 9.4的jsonb类型转换为float

sql

我正在尝试以下查询:

SELECT (json_data->'position'->'lat') + 1.0 AS lat FROM updates LIMIT 5;

(+1.0仅用于强制转换浮动。我的实际查询要复杂得多,此查询只是问题的测试用例。)

我得到了错误:

ERROR:  operator does not exist: jsonb + numeric

如果我添加显式强制转换:

SELECT (json_data->'position'->'lat')::float + 1.0 AS lat FROM updates LIMIT 5;

错误变为:

ERROR:  operator does not exist: jsonb + double precesion

我知道大多数jsonb值不能转换为浮点数,但是在这种情况下,我知道纬度都是JSON编号。

是否有一个将jsonb值强制转换为浮点数(或为不可广播的返回NULL)的函数?


阅读 187

收藏
2021-05-10

共1个答案

admin

要从中获得价值,有两种操作JSON。第一个->将返回JSON。第二个->>将返回文本。

详细信息:JSON函数和运算符

尝试

SELECT (json_data->'position'->>'lat')::float + 1.0 AS lat
FROM updates
LIMIT 5
2021-05-10