计算Postgres数组中重叠元素的数量

时间:2018-05-08 10:31:58

标签: arrays postgresql

我有一个整数数组作为列。

有没有办法查询重叠整数的数量?

例如,对于以下3条记录:

COLUMN1
{1,3,7}
{3,4,5}
{1,2}

如何使用ARRAY [3,4,8]获得重叠元素的数量?

我的例子的结果应该是:

1 (element 3)
2 (element 3 and 4)
0 (none)

我找到了

SELECT COLUMN1 && ARRAY[44,45,46] FROM table1

但这会返回真或假。

1 个答案:

答案 0 :(得分:1)

如果您install intarray扩展程序,则可以使用该扩展程序中的“intersection”运算符:

select column1, column1 & ARRAY[3,4,8] as elements
from table1

返回:

column1 | elements
--------+---------
{1,3,8} | {3,8}   
{3,4,5} | {3,4}   
{1,2}   | {}      

要获取结果数组中元素的数量,请使用cardinality(column1 & ARRAY[3,4,8])