unnest()
का उपयोग करें array_agg()
. के साथ , उदा.:
with cte(array1, array2) as (
values (array[1,2,3,4], array[1,4])
)
select array_agg(elem)
from cte, unnest(array1) elem
where elem <> all(array2);
array_agg
-----------
{2,3}
(1 row)
यदि आपको अक्सर इस कार्यक्षमता की आवश्यकता होती है, तो सरल कार्य को परिभाषित करें:
create or replace function array_diff(array1 anyarray, array2 anyarray)
returns anyarray language sql immutable as $$
select coalesce(array_agg(elem), '{}')
from unnest(array1) elem
where elem <> all(array2)
$$;
आप किसी भी सरणी के लिए फ़ंक्शन का उपयोग कर सकते हैं, न केवल int[]
:
select array_diff(array['a','b','c','d'], array['a','d']);
array_diff
------------
{b,c}
(1 row)