说我有一个像这样的JSONB对象:
{"First":"Joe", "Last":"Smith", "Age": "29", "cat":"meow"}
如果我只搜索,我希望能够找到此JSONB对象:
{"First":"Joe", "Age":"29"}
我尝试使用单个属性对此进行了操作,
SELECT * FROM mytable WHERE name @> lower('{"First": "Joe"}')::jsonb
我尝试了两个属性,但没有用:
SELECT * FROM mytable WHERE name @> lower('{"First": "Joe", "Last":"Smith"}')::jsonb
我想念什么?我根据文档应该能找到
答案 0 :(得分:1)
删除lower()
,@>
区分大小写。
SELECT * FROM mytable WHERE name @> '{"First": "Joe", "Last":"Smith"}'::jsonb
如果要使其不区分大小写,请在JSON的文本值上使用lower()
并将所有属性都以小写形式匹配(或也可以应用lower()
)>
SELECT * FROM mytable WHERE lower(name::text)::jsonb
@> '{"first": "joe", "last":"smith"}'::jsonb