MySQL Alpha Generateur
Tout d’abord il faut créer UN caractère alpha en mysql :
DELIMITER ;;
CREATE PROCEDURE `createAlpha`(
OUT `rchar` CHAR(1)
)
SELECT CHAR(FLOOR(97 + RAND() * (122 - 97))) INTO `rchar`;;
- 97 : position du caractère ‘a’ en minuscule
- 122 : position du caractère ‘z’ en minuscule
- RAND() : générateur de nombre aléatoire entre 0.0 et 1.0
- FLOOR() : arrondi au sol (coupe les virgules)
- CHAR() : transformation en caractère du chiffre
Ensuite on peut utiliser cette petite sp, pour constituer une string de 3 caractères.
DELIMITER ;;
CREATE PROCEDURE create3Alpha(
INOUT `l_str` VARCHAR(3)
)
BEGIN
DECLARE `l_tmp` CHAR(1) DEFAULT ' ';
CALL createAlpha(`l_tmp`);
SELECT CONCAT(`l_str`,`l_tmp`) INTO `l_str`;
CALL createAlpha(`l_tmp`);
SELECT CONCAT(`l_str`,`l_tmp`) INTO `l_str`;
CALL createAlpha(`l_tmp`);
SELECT CONCAT(`l_str`,`l_tmp`) INTO `l_str`;
END;;
On utilise une variable tampon `l_tmp` qu’on remplit chaque fois avec 1 caractère qu’on concatène à notre string finale `l_str`
edit : la variable l_str doit être indiquée inout sinon le résultat est tjrs == null.
Le factoring c’est mal, enfin du moins en database. Donc tout en un ça donne :
DELIMITER ;;
DROP PROCEDURE IF EXISTS create3Alpha;;
CREATE PROCEDURE `create3Alpha`()
BEGIN
SELECT CONCAT(
CHAR(FLOOR(97 + RAND() * (122 - 97))),
CHAR(FLOOR(97 + RAND() * (122 - 97))),
CHAR(FLOOR(97 + RAND() * (122 - 97)))
) AS `l_str`;
END;;