/
telnov.ob
/
postgresql-patterns-library
Обзор
Документация
Войти
/
telnov.ob
/
postgresql-patterns-library
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
functions/array/array_unique.sql
50 строк
2 KB
rin-nas
old pg10 comment removed
13 апр 2026, 11:45
13 апр 2026, 11:45
233b866
Код
Авторство
О чём код?
create or replace function public.array_unique(anyarray) returns anyarray immutable strict -- returns null if any parameter is null parallel safe security invoker language sql set search_path = '' as $$ select array( select distinct t.x --using DISTINCT implicitly sorts the array from unnest($1) t(x) ); $$; create or replace function public.array_unique( anyarray, -- input array boolean -- flag to drop nulls ) returns anyarray immutable strict -- returns null if any parameter is null parallel safe security invoker language sql set search_path = '' as $$ select array( SELECT DISTINCT t.x --using DISTINCT implicitly sorts the array FROM unnest($1) t(x) WHERE NOT $2 OR t.x IS NOT NULL ); $$; --TEST do $$ begin assert public.array_unique('{}'::int[]) = '{}'::int[]; assert public.array_unique('{1,1,2,2,null,null}'::int[]) = '{null,1,2}'; assert public.array_unique('{x,x,y,y,null,null}'::text[]) = '{null,x,y}'; assert public.array_unique('{}'::int[], false) = '{}'::int[]; assert public.array_unique('{1,1,2,2,null,null}'::int[], false) = '{null,1,2}'; assert public.array_unique('{x,x,y,y,null,null}'::text[], false) = '{null,x,y}'; assert public.array_unique('{}'::int[], true) = '{}'::int[]; assert public.array_unique('{1,1,2,2,null,null}'::int[], true) = '{1,2}'; assert public.array_unique('{x,x,y,y,null,null}'::text[], true) = '{x,y}'; end; $$;