On Wed, 17 Oct 2007 17:42:21 +0100 Sam Mason <sam@xxxxxxxxxxxxx> wrote: <snip> > CREATE OR REPLACE FUNCTION array_intersect (array1 > INTEGER[],array2 INTEGER[]) RETURNS INTEGER[] AS $$ > DECLARE > out INTEGER[]; > BEGIN > out := '{}'::INTEGER[]; > IF array1 IS NULL OR array2 IS NULL THEN > RETURN NULL; > END IF; > FOR i IN array_lower(array1,1) .. array_upper(array1,1) LOOP > IF (array1[i] = ANY (array2)) AND NOT array1[i] = ANY > (out) THEN out := array_append(out,array1[i]); > END IF; > END LOOP; > RETURN out; > END; > $$ LANGUAGE PLPGSQL; Works like a champ on 8.1. Thanks! Did you see David Fetter's reply to the original post? He has an interesting alternative. Josh ---------------------------(end of broadcast)--------------------------- TIP 5: don't forget to increase your free space map settings