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/current/static/functions-array.html
“&& 重叠(有共同元素)ARRAY[1,4,3] && ARRAY[2,1]”
关于sql - postgres - 比较两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1647385/