如何在postgres中从jsonb列检索多个数据?
在PostgreSQL数据库中,我有一个名为如何在postgres中从jsonb列检索多个数据?,json,regex,postgresql,Json,Regex,Postgresql,在PostgreSQL数据库中,我有一个名为json的json列。内部数据如下所示: { "Version": "0.0.0.1", "Items": [ { "Id": "40000000-0000-0000-0000-000000141146", "Name": "apple"
json
的json列。内部数据如下所示:
{
"Version": "0.0.0.1",
"Items": [
{
"Id": "40000000-0000-0000-0000-000000141146",
"Name": "apple",
"Score": 64,
"Value": 1430000
},
{
"Id": "40000000-0000-0000-0000-000000141147",
"Name": "grapefruit",
"Score": 58,
"Value": 1190000
},
{
"Id": "40000000-0000-0000-0000-000000141148",
"Name": "mango",
"Score": 41,
"Value": 170000
}
]
}
我想做的是从项目
元素中检索所有分数
数据
我尝试使用SQL代码:
select
substring(json ->> 'Items' from '"Score": (\d*),') as score
from vegetables;
然而,它只返回第一个元素的分数,而不是3。我试图使用“\g”标志,它应该全局查找所有结果,但代码不起作用
有人能建议如何正确地做到这一点吗?提前谢谢 考虑到
json
字段的数据类型是jsonb
,则无需使用子字符串或正则表达式,只需使用jsonb_数组_元素
进行横向连接即可。尝试下面的查询
select x->>'Score' "Score" from vegetables
cross join lateral jsonb_array_elements(json->'Items') x
欢迎来到SO。您还应该添加所需的输出。