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



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

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

例如,对于以下 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

但这返回真或假。

如果您安装了 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])

最新更新