提要:本教程将向您展示如何开发一个用户定义的函数,该函数可以在两个数字之间生成一个随机数。

PostgreSQL 提供了一个用于生成 0-1 之间的随机数的函数:random()

SELECT random();

结果如下:

      random
-------------------
 0.738336954731494
(1 行记录)

要生成 1-10 之间的随机,可以使用如下语句:

SELECT random() * 10 + 1 AS RAND_1_10;
    rand_1_10
------------------
 8.82652616035193
(1 行记录)

如果想要生成整数形式的随机数,可以在表达式上使用 FLOOR()CEIL() 函数:

SELECT floor(random() * 10 + 1)::int;
 floor
-------
     9
(1 行记录)
SELECT CEIL(random() * 10 + 1)::int;
 ceil
------
   11
(1 行记录)

通常,生成一个介于 lh 两个整数之间的随机数,可以使用下面的语句:

SELECT floor(random() * (h-l+1) + l)::int;

我们可以上面的语句以自定义函数的形式进行封装:

CREATE OR REPLACE FUNCTION random_between(low INT ,high INT) 
   RETURNS INT AS$$
BEGIN
   RETURN floor(random()* (high-low + 1) + low);
END;
$$ language 'plpgsql' STRICT;

定义好之后,可以调用了:

SELECT random_between(1,100);

结果:

 random_between
----------------
             83
(1 行记录)

如果要生成多个随机数,可以这样:

SELECT random_between(1,100)
FROM generate_series(1,5);
 random_between
----------------
             37
             82
             19
             92
             43
(5 行记录)