使用 PL/pgSQL 中的 json,查找对象键值在其他数组中的数组中的条目

Working with json in PL/pgSQL, find entries in an array where values of object keys are in other array

我有两个这样的 json 数组:

string_array := '["a", "c"]'::json;
object_array := '[{"name": "a"}, {"name": "b"}, {"name": "c"}]'::json;

string_array 视为另一个过滤器。你能告诉我如何编写一段 PL/pgSQL 代码来创建:

'[{"name": "a"}, {"name": "c"}]'

我试过各种方法,但每一种都有不同的问题!

此查询将执行您想要的操作。不过,它依赖于 postgreSQL 9.3 中引入的函数。

SELECT json_agg(json)
FROM json_array_elements('[{"name": "a"}, {"name": "b"}, {"name": "c"}]'::json) as objects(json)
JOIN json_array_elements('["a", "c"]'::json) as keys(key)
    ON ((objects.json -> 'name')::text = key::text);