我的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
类型。
答案 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