簡體   English   中英

檢查 Postgres jsonb 是否包含其中一個值

[英]Check if Postgres jsonb contains one of the values

我需要檢查 jsonb 字段是否可以是數組或字符串。 我擁有的簡單數據:

INSERT INTO users (jsonb) VALUES
('{"name":"Henry", "favoritefood_1":["eggs","apples"]}'),
('{"name":"Herald","favoritefood_1":["apples","potatoes"]}'),
('{"name":"Helen", "favoritefood_1":"apples"}');

我應該如何找到喜歡蘋果和雞蛋的用戶? 我嘗試了很多查詢,最后一個是:

SELECT * FROM users
WHERE CASE
WHEN jsonb_typeof((jsonb->>'favoritefood_1')::jsonb) = 'array'
THEN jsonb_array_elements((jsonb->>'favoritefood_1')::jsonb) IN ('apples', 'eggs')
ELSE (jsonb->>'favoritefood_1')::jsonb IN ('apples', 'eggs') END

有人可以幫我嗎?

只是? 應該管用:

where jsonb -> 'favoritefood_1' ? 'apples'
where jsonb -> 'favoritefood_1' ?| array['apples', 'eggs']

暫無
暫無

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

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