首页 > 解决方案 > 获取所有指定条件的json对象

问题描述

我有一个jsonarray,如下所示

[{"key1":10},{"key1":20},{"key1":30}]

我想获取具有指定条件的所有 json 对象。说获取 key1 小于 25 的所有 json 对象。所以我的 sql 查询应该返回这个列表

[{"key1":10},{"key1":20}]

对此产生的 SQL 查询是什么。

标签: sqlarraysjsonpostgresqljsonb

解决方案


分步演示:db<>fiddle

SELECT
    json_agg(elements)                       -- 3
FROM mytable,
    json_array_elements(mydata) as elements  -- 1
WHERE (elements ->> 'key1')::int < 25        -- 2
  1. 提取 JSON 数组:每个元素现在都在自己的记录中
  2. 按值过滤。请注意,它->>返回一个 type text,因此您需要int在您的情况下将其转换为 type
  3. 将剩余元素重新聚合到新数组中

推荐阅读