2015-04-05 91 views
1

我有了一列city[]表中的行,所以我有:如何算其中一個數組列包含的元素

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

我怎麼能算在我的表城市london

+0

你要統計有多少行包含「倫敦「或」倫敦「出現在一行中的次數? – RealSkeptic 2015-04-05 07:02:14

+0

謝謝@RealSkeptic,我想現在有多少次「london」出現在所有行中 – 2015-04-05 07:04:11

+0

並且它有可能在一行中出現多次? – RealSkeptic 2015-04-05 07:06:07

回答

2

要計算在一定值出現在任何地方在數組中的PostgreSQL表中的所有行,您使用ANY功能:

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

(這是假設的表稱爲cities)。

謂詞'london' = ANY(city)表示「數組city中的任何元素等於'london'」。這將選擇匹配「倫敦」的行,然後對它們進行計數。

+0

謝謝你,我會試試 – 2015-04-05 07:24:55

2

如果表格不平凡小,你會想要在數組列上有一個GIN索引。你要使用數組運算符,而不是= ANY()結構的實際使用該索引:

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

詳情:

+0

它給我的數組值必須以「{」或尺寸信息 – 2015-04-05 09:58:48

+0

@MostafaJamareh:對不起,語法錯誤;固定。 '<@'在兩邊都需要一個*數組*。 – 2015-04-05 10:08:40

相關問題