arrays - postgres将随机数插入数组列

标签 arrays postgresql

所以我在表中有一个类型为 int 的数组列。我正在对一百万行进行负载测试,每条记录需要四个数组元素,所有元素都具有不同的值。

INSERT INTO contacts (numbers)
SELECT '{4443331111, 2223334444, 2223339999, 8887779999}'
  FROM generate_series(1,2) AS x(id);

这会创建 2 条记录,但我需要数字是唯一的。

最佳答案

你需要的是 random() 函数,乘以一些合适的数字得到你的最大值;但是您需要从对该函数的四次调用中构建一个数组。

构造数组值的语法略有不同,在这里使用起来会更容易,如下所示:

SELECT ARRAY[4443331111, 2223334444, 2223339999, 8887779999]

由于您不需要将其构建为字符串,因此您可以对数组的各个部分使用函数调用,这意味着这应该可行:

SELECT ARRAY[random() * 1000000, random() * 1000000, random() * 1000000, random() * 1000000]
FROM generate_series(1,2) AS x(id);

由于 random() 返回一个 float ,而您需要一个整数,因此您需要在某处进行强制转换。最容易编写的是在末尾使用 ::int[] 转换整个数组,如下所示:

SELECT ARRAY[random() * 1000000, random() * 1000000, random() * 1000000, random() * 1000000]::int[]
FROM generate_series(1,2) AS x(id);

Postgres 文档:random() ; array constructors (including note on the casting shortcut)

关于arrays - postgres将随机数插入数组列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16322368/

相关文章:

c++ - vector 超出范围,但为什么?

postgresql - AWS RDS 上的高 CPU 使用率 - Postgres

c# - 增量导出和导入 postgresql C#

arrays - Numpy 连接很慢 : any alternative approach?

java - 仅对正值进行排序,并保留负值及其索引,因为它属于数组

python - 如何创建一个执行插入但该函数必须处理具有不同列数的表的函数?

node.js - 如何在 Sequelize Postgres 中使用小写函数

postgresql - 来自 Ubuntu VM 的 Postgres ODBC 连接问题

c - 访问分配内存的函数时,c程序崩溃

java - 多维ArrayList和整数替换