假设我的数据库中有一些行,其中有一个JSONB列包含一个项目数组,如下所示:
[
{"type": "human", "name": "Alice"},
{"type": "dog", "name": "Fido"},
{"type": "dog", "name": "Pluto"}
]
我需要能够查询基于此列的行。我要编写的查询是一个检查,以查看我的数组参数是否在任何点与此列相交。
例如:
- 如果我搜索
[{"type": "human", "name": "Alice"}]
,应该会找到匹配项。 - 如果我搜索
[{"type": "human", "name": "Alice"}, {"type": "dog", "name": "Doggy"}]
,我也会得到一个匹配(因为其中一个对象相交)
我试过使用?|
操作符,但是根据文档,只能通过键进行比较,我需要匹配整个jsonb对象
1条答案
按热度按时间bvjveswy1#
您可以将
exists
与cross join
一起使用:See fiddle.
作为函数:
See fiddle.