在 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'];
我这里有下面的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'];