ArrXor
来自 PostgreSQL 维基
跳转到导航跳转到搜索数组 XOR (对称差)
接受两个数组,并返回在两个数组中都找不到的元素(类似于在两个数组之间使用 EXCEPT)。原始讨论可以在这里找到:http://markmail.org/message/o2f5hvq5vpxqzou7
在 PostgreSQL 9.0+ 中测试
"在数学中,两个集合的对称差是指属于这两个集合之一而不属于它们的交集的元素集合。集合 A 和 B 的对称差通常用 A Δ B 表示"。来自 http://en.wikipedia.org/wiki/Symmetric_difference
create or replace function arrxor(anyarray,anyarray) returns anyarray as $$
select ARRAY(
(
select r.elements
from (
(select 1,unnest($1))
union all
(select 2,unnest($2))
) as r (arr, elements)
group by 1
having min(arr) = max(arr)
)
)
$$ language sql strict immutable;