我有整数数组{0,23, 1 ,29,0,15,1} postgres(V 9.3.6),我想删除上面使用它突出显示的特定元素&#39 ; s索引例如现在我使用函数 idx
得到那些元素索引CREATE OR REPLACE FUNCTION idx(anyarray, anyelement)
RETURNS int AS
$$
SELECT i FROM (
SELECT generate_series(array_lower($1,1),array_upper($1,1))
) g(i)
WHERE $1[i] = $2
LIMIT 1;
$$ LANGUAGE sql IMMUTABLE;
但是我无法在postgres中找到任何内置函数,允许使用索引删除。
答案 0 :(得分:2)
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}