我有arr
列,它的類型爲array
。如何在數組中使用包含value子句的選擇
我需要讓行,其中arr
列包含值s
這個查詢:
SELECT * FROM table WHERE arr @> ARRAY['s']
給出了錯誤:
ERROR: operator does not exist: character varying[] @> text[]
爲什麼它不工作?
p.s.我知道any()
運營商,但爲什麼不@>
工作?
我有arr
列,它的類型爲array
。如何在數組中使用包含value子句的選擇
我需要讓行,其中arr
列包含值s
這個查詢:
SELECT * FROM table WHERE arr @> ARRAY['s']
給出了錯誤:
ERROR: operator does not exist: character varying[] @> text[]
爲什麼它不工作?
p.s.我知道any()
運營商,但爲什麼不@>
工作?
嘗試
SELECT * FROM table WHERE arr @> ARRAY['s']::varchar[]
SELECT * FROM table WHERE arr && '{s}'::text[];
比較兩個數組的遏制。
注意,這也可能工作:
SELECT * FROM table WHERE s=ANY(array)
這也防止了我需要投射到varchar,就像's @ ARRAY ['constant':: varchar]'一樣短。 –
就像一個魅力,謝謝! –
青睞這個語法的簡潔性。 –