我正在尝试以下查询:
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 值不能转换为浮点数,但在这种情况下,我知道 lat 都是 JSON 数字。
是否有一个函数可以将 jsonb 值转换为浮点数(或者对于不可转换的返回 NULL)?
有两个操作可以从中获取值JSON
。第一个->
将返回JSON
。第二个->>
将返回文本。
细节:JSON 函数和运算符
Try
SELECT (json_data->'position'->>'lat')::float + 1.0 AS lat
FROM updates
LIMIT 5
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)