Postgresql PSQL:查找记录,其中包含哈希数组的JSONB字段包含一些不区分大小写的值

Postgresql PSQL:查找记录,其中包含哈希数组的JSONB字段包含一些不区分大小写的值,postgresql,where-clause,jsonb,Postgresql,Where Clause,Jsonb,我需要找到PostgreSQL数据库(9.5)中的所有记录,其中connectionsJSONB列包含一些信息的哈希数组。并且此搜索查询必须不区分大小写 例如,列将是[{“type”:“email”,“value”:john@test.com“,“comment”:“Test”},{“type”:“skype”,“value”:“john.b”,“comment”:“Test2”}])。我需要找到记录,其中connections列包含类型为“skype”和值为“JOHN.B”的条目 我怎么做?谢

我需要找到PostgreSQL数据库(9.5)中的所有记录,其中
connections
JSONB列包含一些信息的哈希数组。并且此搜索查询必须不区分大小写

例如,列将是
[{“type”:“email”,“value”:john@test.com“,“comment”:“Test”},{“type”:“skype”,“value”:“john.b”,“comment”:“Test2”}]
)。我需要找到记录,其中
connections
列包含类型为“skype”和值为“JOHN.B”的条目


我怎么做?谢谢。

这里有一个使用
@
的方法:

where connections @> '{"type":"skype"}' and
      connections @> '{"value":"john.b"}')
结果:

 id | email |                                     connections                                     
----+-------+-------------------------------------------------------------------------------------
  1 | test  | [{"type": "email", "value": "john@test.com"}, {"type": "skype", "value": "john.b"}]
(1 row)
WITH t(id,email,connections) AS ( VALUES
  (1,'test','[
    {"type": "email", "value": "john@test.com"},
    {"type": "skype", "value": "john.b"}
  ]'::JSONB)
)
SELECT * FROM t
WHERE connections @> '[{"type": "skype"}]' 
AND connections @> '[{"value": "john.b"}]';
 id | email |                                     connections                                     
----+-------+-------------------------------------------------------------------------------------
  1 | test  | [{"type": "email", "value": "john@test.com"}, {"type": "skype", "value": "john.b"}]
(1 row)