我已经搜索了一下,但这似乎是查询JSONB字段的更独特的要求,而不是常见的,还没有找到解决方案。 我的表有一个名为"计划"的 jsonb 字段,其内容如下所示:
{
days: [
{
summary: {
total: 100
}
}
]
}
days 数组中可能存在无穷大日对象。是否可以运行一个查询来选择至少一个 day 对象中"total"大于或小于给定数字的所有行?
如有必要,我可以重新排列表格或获取"摘要"数据并将其放在 postgres 数组字段中。
如果我正确理解您的问题,您可以在 jsonb 列中获取所有带有total
的行,plan
不等于 101,如下所示:
SELECT *
FROM my_table t,
LATERAL jsonb_array_elements(plan->'days') days
WHERE
(days->'summary'->>'total')::integer != 101;