![](/img/trans.png)
[英]Postgres efficiently check JSONB contains while skipping missing values
[英]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.