[英]How to use LOWER() on elements of a jsonb column in PostgreSQL?
我有一個像這樣的 PostgreSQL 表:
Table t
id | keys (jsonb)
---+----------------
1 | ["Key1", "Key2"]
我的目標是查詢此表以找出列表的鍵之一是否包含在 jsonb 數組列“鍵”中。
我設法使用以下方法獲得結果:
SELECT *
FROM t
WHERE keys ?| Array ['Key1', 'Key2'];
但是,我找不到通過在表中的“鍵”值上應用lower() 來使此查詢更廣泛的方法。
有沒有辦法遍歷元素以在每個元素上應用lower()?
您可能需要取消嵌套兩個數組:
select *
from t
where exists (
select 1
from jsonb_array_elements_text(t.keys) k1(val)
inner join unnest(array['Key1', 'Key2']) k2(val)
on lower(k1.val) = lower(k2.val)
)
感謝上面的回復,我設法找到了一種方法來做到這一點:
SELECT *
FROM t, jsonb_array_elements_text(keys) key
WHERE lower(key) in ('key1', 'key2') ;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.