调用RAND()从mysql中的函数返回相同的值:

时间:2012-04-27 19:18:32

标签: mysql random

作为查询,每次执行都会返回不同的值:

SELECT FLOOR(200000000000 + (RAND() * 100000000000))

编写一个执行相同操作的函数(从存储过程调用):

DROP FUNCTION if exists setRandomNumber//
CREATE FUNCTION setRandomNumber()
RETURNS INT
BEGIN

 DECLARE rand INT DEFAULT 0;

 SELECT FLOOR(200000000000 + (RAND() * 100000000000)) INTO rand;

RETURN rand;
END//

始终产生相同的数字:

SELECT setRandomNumber();

的产率:

setRandomNumber() 2147483647

setRandomNumber() 2147483647

setRandomNumber() 2147483647

setRandomNumber() 2147483647

等等。

这是一个错误吗?如何在函数或存储过程中迭代设置多个随机数?

2 个答案:

答案 0 :(得分:6)

你最大限度地超出整数限制 - 200000000000太大

答案 1 :(得分:1)

您必须使用BIGINT而不是INT来返回值