sql - postgres - 比较两个数组

标签 sql arrays postgresql

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/

相关文章:

postgresql - Kubernetes Helm Chart - 调试

android - SQL : Query() where COL = int instead of string ?(图片+里面的代码)

计算链表中字符串出现的次数

sql - Django 查询集 : Filter by reverse key and order by

javascript - 基于多个因素转换 Javascript 数组

c - 生成不同的随机数

postgresql - 扩展 PostgreSQL 存储过程

sql - Transact-SQL 中有表文字吗?

sql - 使用 SQL Server 的 GOTO 进行错误处理是不好的做法吗?

php - 我如何创建一个 MySQL 事件来自动添加从我的笔记本电脑中新移动的图像文件?