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根据参数类型和数量,自动匹配调用相应的同名函数,安逸