从 PostgreSQL 中的嵌套 JSON 数组中获取所有值
Get all the values from nested JSON arrays in PostgreSQL
我想使用原始查询提取 abc
数组中的所有 app_indexe
。我使用的数据库是 PostgreSQL 10.9。我成功地能够提取到 abc
键。我能够得到的是通过传递数组的索引号。但我想要所有 app_index.
没有索引:
select v_info->'abc' from table1
索引:
select v_info->'abc'->>0 from table1
{
"id": 1406711300166,
"abc": [
{
"am": "1.74",
"am_set": {
"sh_mon": {
"am": "1.74",
"cur_code": "ABC"
},
"pre_money": {
"amount": "1.74",
"code": "ABC"
}
},
"app_index": 0
},
{
"am": "1.74",
"am_set": {
"sh_mon": {
"am": "1.74",
"cur_code": "ABC"
},
"pre_money": {
"amount": "1.74",
"code": "ABC"
}
},
"app_index": 1
}
],
"xyx": 0,
"zyx": "random var"
}
我需要的是abc
的app_index
中的所有值。
输出
abc_index
----------
0
1
您可以使用 json(b)_array_elements()
取消嵌套数组,然后只访问属性 app_index
:
的值
select el -> 'app_index' abc_index
from mytable t
cross join lateral jsonb_array_elements(t.v_info -> 'abc') a(el)
| abc_index |
| :-------- |
| 0 |
| 1 |
我想使用原始查询提取 abc
数组中的所有 app_indexe
。我使用的数据库是 PostgreSQL 10.9。我成功地能够提取到 abc
键。我能够得到的是通过传递数组的索引号。但我想要所有 app_index.
没有索引:
select v_info->'abc' from table1
索引:
select v_info->'abc'->>0 from table1
{
"id": 1406711300166,
"abc": [
{
"am": "1.74",
"am_set": {
"sh_mon": {
"am": "1.74",
"cur_code": "ABC"
},
"pre_money": {
"amount": "1.74",
"code": "ABC"
}
},
"app_index": 0
},
{
"am": "1.74",
"am_set": {
"sh_mon": {
"am": "1.74",
"cur_code": "ABC"
},
"pre_money": {
"amount": "1.74",
"code": "ABC"
}
},
"app_index": 1
}
],
"xyx": 0,
"zyx": "random var"
}
我需要的是abc
的app_index
中的所有值。
输出
abc_index
----------
0
1
您可以使用 json(b)_array_elements()
取消嵌套数组,然后只访问属性 app_index
:
select el -> 'app_index' abc_index
from mytable t
cross join lateral jsonb_array_elements(t.v_info -> 'abc') a(el)
| abc_index | | :-------- | | 0 | | 1 |