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);

我认为我可以将数组转换为字符串,但是听起来像是糟糕的解决方案。

有任何想法吗?

回答:

想通了…有一个&&运算符

http://www.postgresql.org/docs/8.2/static/functions-

array.html

“ &&重叠(具有共同的元素)ARRAY [1,4,3] && ARRAY [2,1]”

以上是 postgres-比较两个数组 的全部内容, 来源链接: utcz.com/qa/432686.html

回到顶部