PgSQL随机数生成函数random_int(),int版和bigint版
不管是MySQL还是PgSQL,随机数生成函数都要求带着算法才能用,还是封装一下,用起来方便。
PS:经过一天简单测试,发现这几个函数没有明显的性能差异,只是入参出参类型不同,反正用得少,就这样吧。
-- 随机数生成函数,int版
CREATE OR REPLACE FUNCTION random_int(
start_num INT,
end_num INT
)
RETURNS INT
AS $BODY$
BEGIN
-- 功能,生成最小值为start_num,最大值为end_num的随机数
RETURN FLOOR(start_num + random() * (end_num - start_num + 1));
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 1
-- 随机数生成函数,bigint版
CREATE OR REPLACE FUNCTION random_int(
start_num BIGINT,
end_num BIGINT
)
RETURNS BIGINT
AS $BODY$
BEGIN
-- 功能,生成最小值为start_num,最大值为end_num的随机数
RETURN FLOOR(start_num + random() * (end_num - start_num + 1));
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 1
-- 随机数生成函数,smallint版
CREATE OR REPLACE FUNCTION random_int(
start_num smallint,
end_num smallint
)
RETURNS smallint
AS $BODY$
BEGIN
-- 功能,生成最小值为start_num,最大值为end_num的随机数
RETURN FLOOR(start_num + random() * (end_num - start_num + 1));
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 1
这几个个函数可以并存,PgSQL根据参数类型和数量,自动匹配调用相应的同名函数,安逸

本文介绍了PgSQL中三种不同整数类型的随机数生成函数:int、bigint和smallint版本。这些函数通过使用random()函数来生成指定范围内的随机数,并且在简单测试中表现出了相近的性能。
2533

被折叠的 条评论
为什么被折叠?



