【问题标题】:Calling RAND() From a function in mysql returns the same value:从 mysql 中的函数调用 RAND() 返回相同的值:
【发布时间】:2012-04-27 19:18:32
【问题描述】:

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

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

等等。

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

【问题讨论】:

    标签: mysql random


    【解决方案1】:

    你正在最大化一个整数的限制 - 200000000000 太大了

    【讨论】:

    • 啊,你打败了我。刚刚想通了。 . .哦!谢谢!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-03-20
      • 1970-01-01
      • 2017-07-03
      • 2020-07-27
      • 2014-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多