问题
Are there any available functions for work with big integers?
I've found a module intarray, but functions from this module only work with integer
, not bigint
.
I miss a function for removing an item from an array. Something like the implementation of a "minus" operator in mentioned module:
int[] - int
(remove entries matching right argument from array)
回答1:
Updated 2015 with a better version.
You can substitute your own function. This one is reasonably fast:
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;
Call:
SELECT arr_subtract('{3,5,6,7,8,9}':: int8[], '{3,4,8}'::int8[]);
Result:
{5,6,7,9}
Keeps the original order of the array.
Related:
- PostgreSQL unnest() with element number
- Exclude matched array elements
来源:https://stackoverflow.com/questions/8579701/biginteger-array-functions