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

时间:2015-02-28 12:12:06

标签: postgresql postgresql-9.3

我有整数数组{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中找到任何内置函数,允许使用索引删除。

1 个答案:

答案 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}