如果我有一个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