使用 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);
我有两个这样的 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);