我有一张表:
CREATE TABLE cityData
(
item character varying,
data jsonb
);
它包含像
这样的值ITEM DATA
test1 [{"rank":"1", "city":"New York"},{"rank":"3", "city":"Sidney"}]
test2 [{"rank":"2", "city":"NEW YORK"},{"rank":"4", "city":"New Delhi"}]
我需要获得一些不同的json对象,其中city是'New York' 我使用以下查询
SELECT * FROM cityData t
WHERE ( data @> '[{"city":"New York"}]')
and t.item ilike '%test%';
但是这个查询输出了test1行。我需要使查询不区分大小写,以便data @> '[{"city":"New York"}]'
匹配New York
和NEW YORK
答案 0 :(得分:5)
where lower(data::text)::jsonb @> lower('[{"city":"New York"}]')::jsonb