是否有可用于处理大整数的函数?
我找到了一个intarray模块,但该模块中的函数仅适用于integer
,而不是bigint
。
我需要一种从数组中删除项目的函数。类似于上述模块中“减”运算符的实现:
int[] - int
(从数组中删除与右侧参数匹配的条目)
是否有可用于处理大整数的函数?
我找到了一个intarray模块,但该模块中的函数仅适用于integer
,而不是bigint
。
我需要一种从数组中删除项目的函数。类似于上述模块中“减”运算符的实现:
int[] - int
(从数组中删除与右侧参数匹配的条目)
使用新增的array_remove(anyarray, anyelement)
函数,现在这个任务变得简单了:
test=> SELECT array_remove('{1,3,4,3}'::bigint[], 3);
array_remove
--------------
{1,4}
创建一个自定义函数。这个函数速度相当快:
CREATE OR REPLACE FUNCTION arr_subtract(int8[], int8[])
RETURNS int8[]
LANGUAGE sql IMMUTABLE AS
$func$
SELECT ARRAY(
SELECT a
FROM unnest($1) WITH ORDINALITY x(a, ord)
WHERE a <> ALL ($2)
ORDER BY ord
);
$func$;
电话:
SELECT arr_subtract('{3,5,6,7,8,9}':: int8[], '{3,4,8}'::int8[]);
结果:
{5,6,7,9}
可以一次性删除多个值。
保持数组的原始顺序。
不适用于NULL值。
相关链接: