[英]How To Query an array of JSONB
我在 Postgres db 中有名為steps
的jsonb[]
列的表(訂單)。
我需要創建 SQL 查詢到 select 記錄,其中 Step1 和 Step2 和 Step3 具有成功狀態
[
{
"step_name"=>"Step1",
"status"=>"success",
"timestamp"=>1636120240
},
{
"step_name"=>"Step2",
"status"=>"success",
"timestamp"=>1636120275
},
{
"step_name"=>"Step3",
"status"=>"success",
"timestamp"=>1636120279
},
{
"step_name"=>"Step4",
"timestamp"=>1636120236
"status"=>"success"
}
]
表結構id | 姓名 | 步驟 (jsonb)
您可以使用 JSON 值包含檢查條件是否存在的操作
select
*
from
test
where
steps @> '[{"step_name":"Step1","status":"success"},{"step_name":"Step2","status":"success"},{"step_name":"Step3","status":"success"}]'
'Normalize' 進入steps
項目列表並檢查每個項目是否都有"status":"success"
。 順便說一句,您的示例無效 JSON。 所有=>
都需要替換為:
並且缺少逗號。
select id, name from orders
where
(
select bool_and(j->>'status' = 'success')
from jsonb_array_elements(steps) j
where j->>'step_name' in ('Step1','Step2','Step3') -- if not all steps but only these are needed
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.