如何从 json 对象数组中 select 单个字段?
How to select single field from array of json objects?
我有一个 JSONB 列,其值在以下 JSON 结构中
{
"a": "value1", "b": [{"b1": "value2", "b3": "value4"}, {"b1": "value5", "b3": "value6"}]
}
我只需要 select 结果中的 b1
字段。所以预期的结果是
["value2", "value5"]
我可以select使用查询
完成数组
select columnname->>'b' from tablename
SELECT
jsonb_agg(elements -> 'b1') -- 2
FROM mytable,
jsonb_array_elements(mydata -> 'b') as elements -- 1
- a) 从 b 元素中得到 JSON 数组 (b) 将数组元素提取到一行中每个
- a) 从数组元素中获取 b1 值 (b) 将这些值重新聚合到一个新的 JSON 数组中
如果您使用的是 Postgres 12 或更高版本,您可以使用 JSON 路径查询:
select jsonb_path_query_array(the_column, '$.b[*].b1')
from the_table;
我有一个 JSONB 列,其值在以下 JSON 结构中
{
"a": "value1", "b": [{"b1": "value2", "b3": "value4"}, {"b1": "value5", "b3": "value6"}]
}
我只需要 select 结果中的 b1
字段。所以预期的结果是
["value2", "value5"]
我可以select使用查询
完成数组select columnname->>'b' from tablename
SELECT
jsonb_agg(elements -> 'b1') -- 2
FROM mytable,
jsonb_array_elements(mydata -> 'b') as elements -- 1
- a) 从 b 元素中得到 JSON 数组 (b) 将数组元素提取到一行中每个
- a) 从数组元素中获取 b1 值 (b) 将这些值重新聚合到一个新的 JSON 数组中
如果您使用的是 Postgres 12 或更高版本,您可以使用 JSON 路径查询:
select jsonb_path_query_array(the_column, '$.b[*].b1')
from the_table;