CREATE FUNCTION randomstring(`size` INT(11) UNSIGNED, `mask` INT(1)) RETURNS VARCHAR(255) SQL SECURITY INVOKER BEGIN DECLARE `no` VARCHAR(10) DEFAULT '0123456789'; DECLARE `uc` VARCHAR(26) DEFAULT 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; DECLARE `lc` VARCHAR(26) DEFAULT 'abcdefghijklmnopqrstuvwxyz'; DECLARE `sc` VARCHAR(12) DEFAULT './!@#$%^&[]'; DECLARE `string` VARCHAR(255) DEFAULT ''; # use our mask to determine what set of characters we will use to # generate this random string DECLARE `source` VARCHAR(74) DEFAULT ''; IF `mask` >= 8 THEN SET `source` = CONCAT(`source`,`sc`); SET `mask` = `mask` - 8; END IF; IF `mask` >= 4 THEN SET `source` = CONCAT(`source`,`no`); SET `mask` = `mask` - 4; END IF; IF `mask` >= 2 THEN SET `source` = CONCAT(`source`,`uc`); SET `mask` = `mask` - 2; END IF; IF `mask` >= 1 THEN SET `source` = CONCAT(`source`,`lc`); SET `mask` = `mask` - 1; END IF; IF `size` > 255 THEN SET `size` = 255; END IF; WHILE LENGTH(`string`) < `size` DO SET `string` = CONCAT(`string`, SUBSTR(`source`, CAST((RAND()*100) AS UNSIGNED) % LENGTH(`source`),1)); END WHILE; RETURN `string`; END