做一些小系统,经常要初始化用户密码,密码要随机,但又不能太复杂。特别像一些不重要的系统,比如,投票网站等等。
下面就是我写的纯数字随机密码生成函数:
CREATE OR REPLACE FUNCTION public.isnumeric(text) RETURNS boolean LANGUAGE sql AS $function$ SELECT $1 ~ '^[0-9]+$' $function$ ;
CREATE OR REPLACE FUNCTION public.rnd_pwd(str varchar,len integer) RETURNS varchar LANGUAGE plpgsql AS $function$ DECLARE str1 varchar; v_sum varchar; v_s varchar; v_i integer; begin str1=str|| cast(now() as varchar); str1=substr(md5(str1),1,len); v_i:=1; v_sum:=''; loop v_s:=substr(str1,v_i,1); if isnumeric(v_s) then v_sum:=v_sum ||v_s; else v_sum:=v_sum || cast((ascii(v_s) -ascii('a')) as varchar) ; end if; v_i=v_i+1; if v_i>length(str1) then exit; end if; end loop; return v_sum; end;$function$ ;
比如,我们可以这样用:
select rnd_pwd('fdsfss',6); rnd_pwd --------- 751533
或者批量生成随机代码,每个用户不同,但是都是4位数字:
update t_user set pwd=rnd_pwd(logname,4);
【相关教程推荐】
2. php从入门到精通
3. bootstrap教程