2009-10-30 150 views
10

Postgres的一個數組的數據類型,在這種情況下,數字數組:Postgres的 - 比較兩個數組

CREATE TABLE sal_emp (name text, pay_by_quarter integer[]); 
INSERT INTO sal_emp VALUES ('one', '{1,2,3}'); 
INSERT INTO sal_emp VALUES ('two', '{4,5,6}'); 
INSERT INTO sal_emp VALUES ('three', '{2,4,6}'); 
SELECT * FROM sal_emp; 

Result: 
one, {1,2,3} 
two, {4,5,6} 
three, {2,4,6} 

從我可以告訴,你可以按照如下只能查詢一個數組:

SELECT * FROM sal_emp WHERE 4=ANY(pay_by_quarter); 
SELECT * FROM sal_emp WHERE ARRAY[4,5,6]=pay_by_quarter; 

這意味着你可以選擇一個數組中包含單個參數匹配的行,或者如果整個數組匹配一個數組參數。

我需要選擇行的數組中的任何成員與參數數組的任何成員匹配的行 - 有點像'IN',但我不知道如何。我嘗試了以下兩種方法,但既沒有工作:

SELECT * from sal_emp WHERE ARRAY[4,5,6]=ANY(pay_by_quarter); 
SELECT * from sal_emp WHERE ANY(pay_by_quarter) IN (4,5,6); 

我想我可以做一些與數組轉換爲一個字符串,但聽起來像解決貧窮..

什麼想法?

回答