簡體   English   中英

查詢 jsonb 列中的數組值

[英]Query for array values within jsonb column

我的work表中有一個名為choresjsonb列,其中的數據如下所示:

[{"task": "feed_dog", "value": "Daily"},{"task": "mop_floor", "value": "Weekly"]

每個用戶的chores數組中可能有零到幾十個任務。

如何按任務名稱查詢? 例如,提取至少一項taskfeed_dog的所有記錄。

SELECT chores->>'task' FROM work返回一堆null結果, SELECT chores->'task' FROM work也是如此。

您需要取消嵌套數組:

select w.*
from "work" w
where exists (select *
              from jsonb_array_elements(w.chores) as t(task)
              where t.task ->> 'task" = 'feed_dog');

使用 Postgres 12,這更容易編寫:

select *
from "work" w
where jsonb_path_exists(w.chores, '$[*] ? (@.task == "feed_dog")')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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