Postgresql 删除特定索引上的整数值

Postgresql remove integer value on particular index

我有整数数组 {0,23,1,29,0,15,1} postgres(V 9.3.6) 我想删除突出显示的特定元素上面使用它的索引例如它是 3 现在我使用函数 idx

得到那些元素索引
CREATE OR REPLACE FUNCTION idx(anyarray, anyelement)
    RETURNS int AS 
$$
SELECT i FROM (
    SELECT generate_series(array_lower(,1),array_upper(,1))
) g(i)
WHERE [i] = 
LIMIT 1;
$$ LANGUAGE sql IMMUTABLE;

但我无法在 postgres 中找到任何允许使用索引删除的内置函数。

create or replace function idx(the_array anyarray, idx integer)
returns anyarray as $$

    select array_agg(a order by i)
    from (
        select
            generate_series(1, array_upper(the_array, 1)),
            unnest(the_array)
    ) s(i, a)
    where i != idx

; $$ language sql;

select idx(array[0,23,1,29,0,15,1], 3);
       idx        
------------------
 {0,23,29,0,15,1}