Postgresql-13
如何查詢 JSONB 欄位類型
我有一個名為“隊列”的 jsonb 欄位,它包含以下內容:
{ "call_queue_pid": [ 1, 2, 3 ], "omni_queue_pid": [ 4, 5, 6 ] }
我嘗試以下查詢來搜尋omni_queue_pid = 5
Select * from ws a, jsonb_array_elements(a.queues::jsonb) j Where cast(j->> 'omni_queue_pid' as integer) = 5
但它返回SQL 錯誤$$ 22023 $$: 錯誤: 無法從對像中提取元素
我錯過了什麼?
需要幫忙
謝謝唐
您需要取消嵌套數組:
Select * from ws a cross join jsonb_array_elements_text(a.queues -> 'omni_queue_pid') as o(id) Where o.id::int = 5
目前尚不清楚您到底想要什麼結果,但 EXISTS 條件可能更有效:
select * from ws a where exists (select * from jsonb_array_elements_text(a.queues -> 'omni_queue_pid') as o(id) Where o.id::int = 5)
或使用 jsonpath 運算符:
select * from ws where queues @? '$.omni_queue_pid[*] == 5'