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