PostgreSQL jsonb-通过数组元素搜索字符串

时间:2019-11-29 12:40:38

标签: postgresql jsonb

案例1(工作正常):我的数据库条目是一个简单的对象

employee_id | data (jsonb)
4           | {"name":"john"}

SELECT * 
FROM employee
WHERE data ? 'john'; 

它将正确找到整个条目

情况2:我的数据库条目是一个元素数组

employee_id | data
4           | [{"name":"john"},{"city":"rio"}]

我无法使用jsonb函数在任何地方查找与'john'匹配的行。充其量我可以使用WHERE data->0 ? 'john',但这不应该取决于数组条目的索引

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以像这样使用jsonb“包含”运算符@>

... WHERE data @> '[{"name": "john"}]'

这将找到data在顶层具有包含该条目的数组的所有行。