MySQL stored procedure to generate "safe noise"

I'm playing around with stored procedures, and thought I'd try my hand at creating a function used in various capacities at work. Here it is.



USE test;
DROP FUNCTION IF EXISTS safe_noise;
DELIMITER $$
CREATE FUNCTION safe_noise (n INT UNSIGNED)
RETURNS VARCHAR(100) NOT DETERMINISTIC
BEGIN
DECLARE x CHAR(100) DEFAULT
"bcdfghkmnpqrstvwxzBCDFGHKMNPQRSTVWXZ23456789";
DECLARE y CHAR(100) DEFAULT "";
DECLARE i INT;
WHILE n > 0 DO
SET n = n - 1;
SET i = 1 + FLOOR(44 * RAND());
SET y = CONCAT(y, SUBSTR(x, i, 1));
END WHILE;
RETURN y;
END
$$
DELIMITER ;

-- Sample output:
-- mysql> select safe_noise(50);
-- +----------------------------------------------------+
-- | safe_noise(50) |
-- +----------------------------------------------------+
-- | 96Pw5CKDPW4g5pv984DSdp4VfpXvtK3KpDR6KfSp9tHVkFbKXp |
-- +----------------------------------------------------+
-- 1 row in set (0.01 sec)



Aside: I'm really surprised that blogger.com can't handle verbatim text excerpts. There's more to life than chin music, people! God forbid I should post some Python...

Comments

Popular Posts