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;;
Posted in Sql by El Gnap at October 29th, 2012.
Tags: , ,

Comments are closed.