PostgreSQL 生成随机整数

本文介绍了PostgreSQL数据库中如何利用random()函数生成0-1之间的随机数,并结合ceil()、floor()和trunc()进行取整操作以生成随机整数。同时,通过generate_series()函数展示了如何生成一系列整数,以及如何重复查询和生成不重复的随机整数。这些技巧在数据库操作和数据处理中非常实用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先 random() 函数用于生成 0-1 之间的随机数

postgres=# SELECT random() as rand;
        rand
--------------------
 0.6296923727161818
(1 row)

取整函数有 ceil() floor() trunc()

postgres=# SELECT ceil(1.5) as ceil, floor(1.5) as floor, trunc(1.5) as trunc;
 ceil | floor | trunc
------+-------+-------
    2 |     1 |     1
(1 row)

将以上两个函数结合起来就可以生成随机整数

-- 生成 1-10 之间的整数
postgres=# SELECT ceil(random() * 10) as randint;
 randint
---------
       4
(1 row)

generate_series() 用于生成一连串整数

postgres=# SELECT generate_series(1,3);
 generate_series
-----------------
               1
               2
               3
(3 rows)
postgres=# SELECT num FROM generate_series(1,3) AS series(num);
 num
-----
   1
   2
   3
(3 rows)

可用于重复查询

-- 重复 3 次打印当前时间(generate_series 步长为2)
postgres=# SELECT current_timestamp FROM generate_series(1,5,2);
       current_timestamp
-------------------------------
 2021-07-20 10:31:13.037552+08
 2021-07-20 10:31:13.037552+08
 2021-07-20 10:31:13.037552+08
(3 rows)

生成多个随机整数

10 个 1-10 之间的整数(有重复)

postgres=# SELECT ceil(random() * 10) AS num FROM generate_series(1,10);
 num
-----
   4
   2
   6
   5
   2
   6
   8
   1
   5
   8
(10 rows)

5 个 1-10 之间的整数(无重复)

postgres=# SELECT num FROM generate_series(1,10) AS series(num) ORDER BY random() LIMIT 5;
 num
-----
   6
   5
   3
   7
   8
(5 rows)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值