我将如何查询 JSON 数组列,例如每个数组值中的文本,并且只返回那些包含它们的行?
["Mr Smith","Ms Wellington","Mr Anderson"]
我已经尝试过这些,但是当我知道它们存在时都没有返回结果:
select * from people where names::jsonb ? 'Mr';
select * from people where names::jsonb @> 'Mr';
我将如何查询 JSON 数组列,例如每个数组值中的文本,并且只返回那些包含它们的行?
["Mr Smith","Ms Wellington","Mr Anderson"]
我已经尝试过这些,但是当我知道它们存在时都没有返回结果:
select * from people where names::jsonb ? 'Mr';
select * from people where names::jsonb @> 'Mr';
在这种情况下,您可以将 jsonb 转换为文本并使用常规 LIKE 运算符。
dbfiddle在这里
有一种通用方法可以测试数组元素的条件比相等更复杂:
所以对于你的情况,它可能是