我具有以下表结构,其中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');
之类的东西?
答案 0 :(得分:1)
您可以使用&&
overlaps operator:
select *
from country_list
where countries && array['china','srilanka'];
答案 1 :(得分:0)
尝试使用此查询。
SELECT * FROM table WHERE name @> ARRAY['s']::varchar[]