在空数组的情况下,postgres数组重叠运算符(&&)

时间:2016-03-28 06:08:17

标签: arrays postgresql operators

我正在运行以下查询。 (&&)运算符用于使用任何重叠的数组元素过滤结果集,如果我有一个非空数组,则工作正常但如果是空数组,结果集为空,可以推断出但是可以在这种情况下,一个空数组被视为通用集可能像array && ({*}::int[])我想知道是否存在类似这样的解决方法。

select  pm.id,
        sum(c.density) as score
from    
    metadata pm,
    unnest(pm.dimen_one_id::int[], pm.dimen_one_density::float[]) as c(id, density)
where   
    c.id = any('{1}'::int[])
group by
    pm.pin_id,
    pm.dimen_one_id,
    pm.dimen_two_id,
    pm.dimen_three_id
having 
    pm.dimen_two_id && '{36,37,38}'::int[] and 
    pm.dimen_three_id && '{23}'::int[]  
order by 
    score desc
limit 
    10
offset  
    0

1 个答案:

答案 0 :(得分:1)

select count(*) from table_name where (cardinality(array::bigint[]) = 0) or (col_name && array::bigint[]);

其中array是实际数组。