試圖找出具有以下資料的 JsonB 列的聚合結果
part | data
-----------------------------------
PART1 |[{"type":"box","reference": "box1"},{"type": "dispatch","reference":
"d1"},{"type": "dispatch","reference": "d2"}]
需要撰寫一個可以提取聚合結果的查詢,只有 type = dispatch 查詢的預期結果是
part | data
-----------------------------------
PART1 |d1,d2
為這些執行找到了一些示例,但它們都不適用于帶有陣列的 JSONB,它們中的大多數都能夠處理物件,即使不需要過濾器也是如此。
uj5u.com熱心網友回復:
您可以使用 JSON 路徑查詢將這些值作為 JSON 陣列回傳:
select part,
jsonb_path_query_array(data, '$[*] ? (@.type == "dispatch").reference')
from the_table
不過,將其轉換為逗號分隔的串列會有點麻煩。
uj5u.com熱心網友回復:
終于通過以下查詢找到了問題的解決方案
select part,(select string_agg(t->>'reference',',') from jsonb_array_elements(data::jsonb) as x(t) where t->>'type' ='dispatch') as output
以下帖子有助于找到解決方案
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/447396.html
標籤:PostgreSQL jsonb
上一篇:aws_s3.query_export_to_s3PostgreSQLRDS擴展將所有多部分CSV檔案匯出到帶有標題的S3
