簡體   English   中英

如何在 PostgreSQL 中的 jsonb 列的元素上使用 LOWER()?

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

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