我正在try 以下查询:
SELECT (json_data->'position'->'lat') + 1.0 AS lat FROM updates LIMIT 5;
(+1.0只是用来强制转换为float.我的实际查询要复杂得多,这个查询只是这个问题的一个测试用例.)
我得到了一个错误:
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值不能转换成浮点数,但在这种情况下,我知道LAT都是JSON数.
是否有一个函数可以将jsonb值强制转换为浮点值(或为不可定值返回null)?