2016-03-28 35 views
2

我正在運行下面的查詢。 (& &)運算符用於過濾任何重疊數組元素的結果集,並且如果我有一個非空數組,但是在空數組的情況下結果集是空的,可以推理出來但可以爲空在這種情況下,數組被視爲通用集合,可能類似array && ({*}::int[])我想知道是否有像這樣的解決方法。postgres數組重疊操作符(&&)在空數組的情況下

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
select count(*) from table_name where (cardinality(array::bigint[]) = 0) or (col_name && array::bigint[]); 

其中陣列是實際的陣列。