【发布时间】:2015-11-27 10:52:48
【问题描述】:
我需要在 MySql 存储函数中生成一个随机字符串。 我解决了这个问题,但是我的解决方案似乎太丑太慢了:
CREATE FUNCTION generate_salt() RETURNS varchar(11) CHARSET utf8
BEGIN
DECLARE res varchar(11) DEFAULT '';
DECLARE salt_sym varchar(2);
DECLARE tmp_res varchar(20) DEFAULT'';
DECLARE salt_len int DEFAULT 10;
WHILE salt_len > 0 DO
SET salt_sym = HEX(FLOOR(32 + RAND() * 96));
SET tmp_res = CONCAT(tmp_res, salt_sym), salt_len = salt_len - 1;
END WHILE;
set res=UNHEX(tmp_res);
RETURN res;
END
此代码将随机整数从音调 [32, 126] 转换为十六进制字符串,然后使用 unhex() 函数将十六进制字符串转换为 ascii 字符串。
有没有办法将数字转换为 ASCII 字符( 0x30 => '0'、0x31=>'1'、0x32=> '2' 等),无需双精度(字节 => 十六进制 2 字面字符串=> char) 转换?
【问题讨论】:
标签: mysql stored-procedures data-conversion