【发布时间】:2017-06-13 21:14:14
【问题描述】:
如果我有一些 json:
id = 1, json = {'key':95}
id = 2, json = {'key':90}
id = 3, json = {'key':50}
有没有一种方法可以使用 Postgres 字段来查询大于 >= 90 的键?
【问题讨论】:
标签: postgresql jsonb
如果我有一些 json:
id = 1, json = {'key':95}
id = 2, json = {'key':90}
id = 3, json = {'key':50}
有没有一种方法可以使用 Postgres 字段来查询大于 >= 90 的键?
【问题讨论】:
标签: postgresql jsonb
使用运算符->>(Get JSON object field as text),例如
with my_table(id, json) as (
values
(1, '{"key":95}'::json),
(2, '{"key":90}'),
(3, '{"key":50}')
)
select *
from my_table
where (json->>'key')::int >= 90;
id | json
----+------------
1 | {"key":95}
2 | {"key":90}
(2 rows)
【讨论】:
jsonb_array_elements(json)取消嵌套json数组元素,见dbfiddle.uk/…
如果您使用 postgres 版本 >= 9.3,那么您可以:
select * from t
where (json->>'key')::numeric >= 90
【讨论】: