2009-10-30 151 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); 

我想我可以做一些与数组转换为一个字符串,但听起来像解决贫穷..

什么想法?

回答