Postgresql PSQL:查找记录,其中包含哈希数组的JSONB字段包含一些不区分大小写的值
我需要找到PostgreSQL数据库(9.5)中的所有记录,其中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”的条目 我怎么做?谢
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)