在 Postgres 中的数组字段中搜索

Search in Array field in Postgres

我这里有下面的table结构countries列是数组类型

 id | name  |             countries             
----+-------+-----------------------------------
  1 | Asia  | {india,china,pakistan,bangladesh}
  2 | World | {india,pakistan,srilanka}

查找china or sriLanka的所有行 我使用以下查询:

SELECT * 
FROM country_list 
WHERE 'china' = ANY(country_list.countries) 
   OR 'srilanka' = ANY(country_list.countries);

我们有没有更好的方法来做到这一点,就像 In 运算符一样?

也许是这样的,SELECT * FROM country_list WHERE name in ('Asia','World');?

试试这个查询。

SELECT * FROM table WHERE name @> ARRAY['s']::varchar[]

您可以使用 && overlaps operator:

select *
from country_list
where countries && array['china','srilanka'];