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

时间:2015-08-01 13:16:42

标签: json postgresql plpgsql

我有两个像这样的json数组:

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

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

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

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

1 个答案:

答案 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);