簡體   English   中英

如何查詢 JSONB 數組

[英]How To Query an array of JSONB

我在 Postgres db 中有名為stepsjsonb[]列的表(訂單)。

我需要創建 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.

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