我在 PostgreSQL 中有一個表經銷商。它看起來像這樣:
insert into dealers values
('{"name":"Henry", "branches":[{"importeurs":[{"akz":"SON",number:"123456"}, {"akz":"ISA",number:"456789"}]}]}'),
('{"name":"Mike", "branches":[{"importeurs":[{"akz":"KIN",number:"133232"}, {"akz":"BAB",number:"767676"}]}]}'),
('{"name":"Sam", "branches":[{"importeurs":[{"akz":"DOM",number:"125454"}, {"akz":"QEE",number:"565665"}]}]}'),;
名稱列是字串和分支列 JSONB。
我的問題是:如何使用給定的 BAB 和 767676 撰寫一個選擇查詢來獲取記錄 Mike?
我試過這個
SELECT * FROM dealers WHERE branches ->'importeurs' @> '[{"akz": "BAB", "number": "767676"}]';
我希望重新編碼 Mike,但它什么也沒回傳。
- - - - - - - 更新 - - - - - - - - - -
在圖片中:
- 查詢回傳結果
- 查詢有錯誤 ERROR: operator does not exist: jsonb @? 未知

uj5u.com熱心網友回復:
branches并且importeurs都是 JSON 陣列,所以你需要傳遞一個陣列給@>運算子:
select *
from dealers
where branches -> 'branches' @> '[{"importeurs": [{"akz": "BAB", "number": "767676"}]}]';
另一種選擇是使用 JSON 路徑查詢:
where branches @? '$.branches[*].importeurs[*] ? (@.akz == "BAB" && @."number" == "767676")'
在線示例
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/536548.html
下一篇:pgsql查詢導致性能問題
