做一些小系统,经常要初始化用户密码,密码要随机,但又不能太复杂。特别像一些不重要的系统,比如,投票网站等等。
下面就是我写的纯数字随机密码生成函数: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);
【相关教程推荐】
本文转载于:CSDN博客,如有侵犯,请联系a@php.cn删除