我在寻找类似的东西,我决定制作自己的版本,如果需要,也可以指定不同的种子(字符列表)作为参数:
CREATE FUNCTION `random_string`(length SMALLINT(3), seed VARCHAR(255)) RETURNS varchar(255) CHARSET utf8
NO SQL
BEGIN
SET @output = '';
IF seed IS NULL OR seed = '' THEN SET seed = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; END IF;
SET @rnd_multiplier = LENGTH(seed);
WHILE LENGTH(@output) < length DO
# Select random character and add to output
SET @output = CONCAT(@output, SUBSTRING(seed, RAND() * (@rnd_multiplier + 1), 1));
END WHILE;
RETURN @output;
END
可以用作:
SELECT random_string(10, '')
它将使用内置的大小写字符+数字种子。
NULL也将是值,而不是“”。
但可以在调用时指定自定义种子:
SELECT random_string(10, '1234')