私信  •  关注

Maarten Ureel

Maarten Ureel 最近创建的主题
Maarten Ureel 最近回复了
6 年前
回复了 Maarten Ureel 创建的主题 » 在MySQL中生成唯一字符串的最简单方法是什么?[重复]

我在寻找类似的东西,我决定制作自己的版本,如果需要,也可以指定不同的种子(字符列表)作为参数:

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')