postgresql jsonb不区分大小写的查询

时间:2016-06-21 16:17:56

标签: postgresql jsonb

我有一张表:

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 YorkNEW YORK

1 个答案:

答案 0 :(得分:5)

where lower(data::text)::jsonb @> lower('[{"city":"New York"}]')::jsonb