我有两个像这样的json数组:
string_array := '["a", "c"]'::json;
object_array := '[{"name": "a"}, {"name": "b"}, {"name": "c"}]'::json;
将string_array
视为另一个的过滤器。能否请您告诉我如何编写一段PL / pgSQL代码来创建:
'[{"name": "a"}, {"name": "c"}]'
我尝试过各种方法,但每个方法都有不同的问题!
答案 0 :(得分:1)
此查询将执行您想要的操作。它依赖于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);