random() 是一个返回随机值的系统函数。
random() 一直存在于 PostgreSQL 中。
用法
random ( ) → double precision
此变体返回一个大于等于 0.0 但小于 1.0 的值。
PostgreSQL 17 及更高版本支持为整数和数值数据类型在指定范围内生成随机数
random(mininteger, maxinteger) →integer
random(minbigint, maxbigint) →bigint
random(minnumeric, maxnumeric) →numeric
PostgreSQL 19 及更高版本支持在指定范围内生成随机日期和时间戳
random(mindate, maxdate) →date
random(mintimestamp, maxtimestamp) →timestamp
random(mintimestamptz, maxtimestamptz) →timestamptz
请注意,random() 不被认为是加密用途的安全随机数生成器;请参阅 pgcrypto。
变更历史
- PostgreSQL 19
- 添加了用于
date和timestamp值的random(min, max)变体 (提交 faf071b5)
- 添加了用于
- PostgreSQL 17
- 添加了
random(min, max)变体 (提交 e6341323)
- 添加了
- PostgreSQL 15
- 改进了 PRNG API 和算法 (提交 3804539e)
- PostgreSQL 9.4
- 改进了随机种子 (提交 98c50656)
示例
random() 的基本用法示例
postgres=# SELECT random();
random
--------------------
0.8297589594208281
(1 row)
在 PostgreSQL 17 及更高版本中,可以指定生成随机数的上限和下限
postgres=# SELECT random(1,10);
random
--------
3
(1 row)
postgres=# SELECT random(-10.1, -3.5);
random
--------
-8.1
(1 row)
在 PostgreSQL 19 及更高版本中,还可以生成随机的 date 和 timestamp 值
postgres=# SELECT random('2021-01-01'::date, '2025-01-01'::date);
random
------------
2021-11-06
(1 row)
参考资料
- PostgreSQL 文档: 随机函数
