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;
这意味着您可以 Select 一行,其中数组包含单个参数的匹配项,或者如果整个数组与数组参数匹配.
我需要 Select 一行,其中该行数组的任何成员都与参数数组的任何成员匹配——有点像"IN",但我不知道如何匹配.我try 过以下两种方法,但都不管用:
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);
我想我可以把数组转换成字符串,但这听起来是个糟糕的解决方案..
有什么 idea 吗?