查询JSON列中的Array中的元素

时间:2017-12-27 01:15:56

标签: sql json postgresql

我的postgress sql数据库中有一个jason专栏。我在jason专栏中有几个属性。我可以使用以下查询搜索属性。

SELECT *  FROM public.object_reference where value->>'name' = 'Sam' and value->>'address' ='home';

但我的问题是我在JSON列中有一个数组。该数组具有键和值对。下面是该数组的样本

"attributes": [ {
    "value": "Sam",
    "key": "name"
}, {
    "value": "abc",
    "key": "address"
}, {
    "value": "Singapore",
    "key": "country"
}, {
    "value": "97813245",
    "key": "mobile"
}, {
    "value": "Engineer",
    "key": "position"
},
"id": "1312312",
"type": "Job",
"classid": "1245568956643546788907634"

}

所以我需要在attributes数组中获取name的值(在JSON列中)。这是json类型列,而不是jsonb类型。

1 个答案:

答案 0 :(得分:1)

您可以解析de对象内部的数组,使用json_array_elements在一组记录器(伪表)中对其进行转换:

select pair->>'value'
  from has_json,json_array_elements(obj->'attributes') as pair
  where pair->>'key' = 'name';

您可以在以下位置查看正在运行的示例:http://rextester.com/ONJZ8486