晚上有朋友问起,简单的写了一个。
DELIMITER $$
CREATE
FUNCTION `t_girl`.`func_rand_string`(f_num tinyint unsigned,f_type tinyint unsigned)
RETURNS varchar(32)
BEGIN
-- Translate the number to letter.
-- No 1 stands for string only.
-- No 2 stands for number only.
-- No 3 stands for combination of the above.
declare i int unsigned default 0;
declare v_result varchar(255) default '';
while i < f_num do
if f_type = 1 then
set v_result = concat(v_result,char(97+ceil(rand()*25)));
elseif f_type=2 then
set v_result = concat(v_result,char(48+ceil(rand()*9)));
elseif f_type=3 then
set v_result = concat(v_result,substring(replace(uuid(),'-',''),i+1,1));
end if;
set i = i + 1;
end while;
return v_result;
END$$
DELIMITER ;
调用方法示例:
select func_rand_string(12,3);