create or replace function arrxor(list1, list2) as (select array_agg(elements) from (select min(arr) as mn, max(arr) as mx, elements from ( (select 1, unnest(list1)) union all (select 2, unnest(list2)) ) as t(arr, elements) group by elements having mn = mx) ) ; # Example: select arrxor(['this','is','a','test'], ['also','part','of','a','test'] ) as arrxor;