функции массива больших целых чисел

Есть ли доступные функции для работы с большими целыми числами?

Я нашел модуль intarray, но функции из этого модуля работают только с integer, а не bigint.

Мне не хватает функции удаления элемента из массива. Что-то вроде реализации оператора «минус» в упомянутом модуле:

int[] - int (удалить записи, соответствующие правильному аргументу из массива)


person Radek Simko    schedule 20.12.2011    source источник
comment
массивы неизменяемы в pg, вам нужно копировать без запрошенных номеров   -  person Pavel Stehule    schedule 21.12.2011


Ответы (1)


Обновлена ​​версия 2015 – улучшенная версия.
Вы можете заменить функцию на свою. Это достаточно быстро:

CREATE OR REPLACE FUNCTION arr_subtract(int8[], int8[])
  RETURNS int8[] AS
$func$
SELECT ARRAY(
    SELECT a
    FROM   unnest($1) WITH ORDINALITY x(a, ord)
    WHERE  a <> ALL ($2)
    ORDER  BY ord
    );
$func$  LANGUAGE sql IMMUTABLE;

Вызов:

SELECT arr_subtract('{3,5,6,7,8,9}':: int8[], '{3,4,8}'::int8[]);

Результат:

{5,6,7,9}

Сохраняет исходный порядок массива.

Связанный:

person Erwin Brandstetter    schedule 21.12.2011