[英]Search by json key in jsonb column PostgreSQL
我有一個具有以下結構的表(簡化):
一些表:
ID | 數據 |
---|---|
1 | {"data": [{"type": {"code": "S"}}, {"type": {"code": "aB"}}]} |
2 | {"data": [{"type": {"code": "B"}}]} |
'Data' 是 jsonb 類型,json 結構始終相同。 我需要找到“代碼等於特定值”的所有記錄,例如“B”。
我試過了:
select * from sometable t
where 'B' in (jsonb_array_elements((t.data->'data'))#>>'{type, code}');
但這給了我一個錯誤:
WHERE 中不允許設置返回函數。
基本上,我在 'where' 中使用 'jsonb_array_elements' 嘗試的任何內容都會出現該錯誤。 有沒有其他方法可以按“代碼”鍵的值查找記錄?
您可以使用@>
運算符
select *
from sometable t
where (t.data -> 'data') @> '[{"type": {"code": "B"}}]'
要么
select *
from sometable t
where t.data @> '{"data": [{"type": {"code": "B"}}]}'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.