... Bu tür dizi_X yardımcı programı için standart kitaplıkların (?) Nerede ?
Aramayı deneyin ... Bazılarını görün ama standart yok:
En basit ve daha hızlı array_distinct()snippet-lib işlevi
İçin en basit ve belki de daha hızlı uygulanmasını Buraya array_unique()ya array_distinct():
CREATE FUNCTION array_distinct(anyarray) RETURNS anyarray AS $f$
SELECT array_agg(DISTINCT x) FROM unnest($1) t(x);
$f$ LANGUAGE SQL IMMUTABLE;
NOT: dizi dizisi dışında herhangi bir veri türü ile beklendiği gibi çalışır,
SELECT array_distinct( array[3,3,8,2,6,6,2,3,4,1,1,6,2,2,3,99] ),
array_distinct( array['3','3','hello','hello','bye'] ),
array_distinct( array[array[3,3],array[3,3],array[3,3],array[5,6]] );
"yan etki", bir elemanlar kümesindeki tüm dizileri patlatmaktır.
Not: JSONB dizileri ile iyi çalışıyor,
SELECT array_distinct( array['[3,3]'::JSONB, '[3,3]'::JSONB, '[5,6]'::JSONB] );
Düzenleme: daha karmaşık ama kullanışlı bir "drop nulls" parametresi
CREATE FUNCTION array_distinct(
anyarray,
boolean DEFAULT false
) RETURNS anyarray AS $f$
SELECT array_agg(DISTINCT x)
FROM unnest($1) t(x)
WHERE CASE WHEN $2 THEN x IS NOT NULL ELSE true END;
$f$ LANGUAGE SQL IMMUTABLE;