如何计算数组列包含元素的行

时间:2015-04-05 06:49:06

标签: java sql arrays database postgresql

我有一个包含city[]列的表,所以我有:

1 city [london]
2 city [london,paris]

如何计算我桌上的城市london

2 个答案:

答案 0 :(得分:2)

要计算PostgreSQL表中某个值出现在数组中任何位置的所有行,请使用ANY函数:

SELECT COUNT(*) FROM cities WHERE 'london' = ANY( city );

(假设该表名为cities)。

谓词'london' = ANY( city )表示"数组city中的任何元素都等于'london'"。这将选择匹配" london"的行,然后计算它们。

答案 1 :(得分:2)

如果表格不是很小,那么你需要在数组列上有一个GIN索引。您将需要使用数组运算符而不是= ANY ()构造来实际使用此索引:

SELECT count(*) FROM cities WHERE '{london}'::text[] <@ city;

详细说明: