我想从 MySQL 存储过程中的整数列表中选择一个随机数。此列表是使用一些计算从另一个函数生成的。
例子:
[41,69,9,31,10,33,13,73,20,62,21,58,22,39]
我尝试了
RAND()
函数,但它们似乎依赖于恒定的最小值、最大值和步长值。任何帮助都会很棒。
注意: 此数字列表并不总是恒定的,因此它们没有恒定的最小值、最大值或步长值。
您可以使用 RAND() 函数和 COUNT() 函数从整数列表中选择一个随机元素。
这是一个示例存储过程,演示了如何执行此操作:
DELIMITER //
CREATE PROCEDURE select_random_number()
BEGIN
DECLARE list VARCHAR(255);
DECLARE count INT;
DECLARE random_index INT;
DECLARE random_number INT;
-- Generate the list of integers
SET list = '41,69,9,31,10,33,13,73,20,62,21,58,22,39';
-- Get the count of integers in the list
SET count = LENGTH(list) - LENGTH(REPLACE(list, ',', '')) + 1;
-- Generate a random index between 1 and the count of integers
SET random_index = FLOOR(RAND() * count) + 1;
-- Select the integer at the random index
SET random_number = SUBSTRING_INDEX(SUBSTRING_INDEX(list, ',',
random_index), ',', -1);
-- Return the random number
SELECT random_number;
END //
DELIMITER ;
您可以使用以下查询调用此存储过程:
CALL select_random_number();
这将从您的整数列表中返回一个随机整数。请注意,您需要更新存储过程中列表变量的值以匹配您自己的整数列表。
有两个功能可以使用。尝试使用
elt()
功能。
[41,69,9,31,10,33,13,73,20,62,21,58,22,39]```