PostgreSQL 9.4 中的 JSONB 到浮点型转换
PostgreSQL 用户尝试使用以下查询将 jsonb 列转换为浮点型:
SELECT (json_data->'position'->'lat') + 1.0 AS lat FROM updates LIMIT 5;
然而,他们遇到了错误:
ERROR: operator does not exist: jsonb + numeric
为了解决此问题,用户尝试使用 ::float 运算符进行显式转换,从而导致错误:
ERROR: operator does not exist: jsonb + double precesion
要将 jsonb 值转换为浮点数,需要执行以下操作:遵循正确的运算符优先级至关重要。 ->运算符返回 JSON 值,而 ->> 则返回 JSON 值。运算符返回一个文本值。要成功转换为浮动,您需要使用 ->>
正确的查询语法是:
SELECT (json_data->'position'->>'lat')::float + 1.0 AS lat FROM updates LIMIT 5;
通过使用 ->>运算符,jsonb 值首先转换为文本,然后可以使用 ::float 运算符将其转换为浮点数。
以上是如何在 PostgreSQL 中正确将 JSONB 转换为浮点型?的详细内容。更多信息请关注PHP中文网其他相关文章!