在Postgres中的Array字段中搜索

时间:2018-06-23 05:57:03

标签: sql arrays postgresql postgresql-9.5

我具有以下表结构,其中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');之类的东西?

2 个答案:

答案 0 :(得分:1)

您可以使用&& overlaps operator

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

答案 1 :(得分:0)

尝试使用此查询。

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