如果我有一個jsonb
柱領域,如所謂的value
:查詢JSONB與數組字段
{"id": "5e367554-bf4e-4057-8089-a3a43c9470c0",
"tags": ["principal", "reversal", "interest"],,, etc}
我如何才能找到包含給定的標籤,例如所有記錄: 如果給:["reversal", "interest"]
它應該找到所有具有「逆轉」或「利息」或兩者的記錄。
我的實驗讓我這個令人厭惡的東西遠:
select value from account_balance_updated
where value @> '{}' :: jsonb and value->>'tags' LIKE '%"principal"%';
當然,這是完全錯誤的,低效的
這個工作,非常感謝! – Agzam
呃......現在我想知道是否可以通過修改'where'部分來實現這個目標?否則,我將不得不重構代碼的其他部分(構成整個查詢)。因此,如果我的查詢開始時間是'select account from account_balance_updated where value @>'{}':: jsonb and value - >>'id'='48c017c2-40c0-4462-ba2b-c2f176a2d086'並且... '我可以通過追加一些魔法來像這樣查詢來達到同樣的訣竅(就像在你的答案中一樣)? – Agzam
我做了這個'和價值 - >'標籤'? array ['interest','reversal']'並且它似乎在工作 – Agzam