2013-05-17 34 views
29

我有arr列,它的類型爲array如何在數組中使用包含value子句的選擇

我需要讓行,其中arr列包含值s

這個查詢:

SELECT * FROM table WHERE arr @> ARRAY['s'] 

給出了錯誤:

ERROR: operator does not exist: character varying[] @> text[]

爲什麼它不工作?

p.s.我知道any()運營商,但爲什麼不@>工作?

回答

58

嘗試

SELECT * FROM table WHERE arr @> ARRAY['s']::varchar[] 
11
SELECT * FROM table WHERE arr && '{s}'::text[]; 

比較兩個數組的遏制。

+0

就像一個魅力,謝謝! –

+0

青睞這個語法的簡潔性。 –

15

注意,這也可能工作:

SELECT * FROM table WHERE s=ANY(array) 
+1

這也防止了我需要投射到varchar,就像's @ ARRAY ['constant':: varchar]'一樣短。 –

相關問題