簡體   English   中英

在 jsonb 列 PostgreSQL 中按 json 鍵搜索

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM