簡體   English   中英

如何從 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

分步演示:db<>fiddle

SELECT
    jsonb_agg(elements -> 'b1')                       -- 2
FROM mytable,
    jsonb_array_elements(mydata -> 'b') as elements   -- 1
  1. a) 從 b 元素中獲取 JSON 數組 (b) 將數組元素分別提取到一行中
  2. a) 從數組元素中獲取 b1 值 (b) 將這些值重新聚合到新的 JSON 數組中

如果您使用的是 Postgres 12 或更高版本,則可以使用 JSON 路徑查詢:

select jsonb_path_query_array(the_column, '$.b[*].b1')
from the_table;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM