大整数数组函数

4

是否有可用于处理大整数的函数?

我找到了一个intarray模块,但该模块中的函数仅适用于integer,而不是bigint

我需要一种从数组中删除项目的函数。类似于上述模块中“减”运算符的实现:

int[] - int(从数组中删除与右侧参数匹配的条目)


在PG中,数组是不可变的,您必须进行复制而不请求数字。 - Pavel Stehule
1个回答

5

Postgres 9.3 或更新版本

使用新增的array_remove(anyarray, anyelement)函数,现在这个任务变得简单了:

test=> SELECT array_remove('{1,3,4,3}'::bigint[], 3);
 array_remove 
--------------
 {1,4}

Postgres 9.2或更低版本

创建一个自定义函数。这个函数速度相当快:

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值。

相关链接:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接