使用sys_guid产生随机数

来源:互联网 发布:ai人工智能交易系统 编辑:程序博客网 时间:2024/05/09 04:29
今天同事需要创建一个由36位的随机数字,中间用一些‘-’分割。没有什么好的方法,于是就问我。我也想了想,如何是最简洁最快速呢?好像oracle没有一个这样可以产生指定位数的纯数字的函数。   想到了sys_guid()函数,专门用来产生32位的随机数,不过中间包括一些大写的英文字母。于是就想使用这个函数加上translate函数来转译一些英文字母。   下面来看一下这个自定义的函数:CREATE OR REPLACE function fun_createrandom return varchar2 is

  Result varchar2(32);

  kk varchar2(64);

  begin

  select TRANSLATE(sys_guid(),'ABCDEFGHIJKLMNOPQUVWXYZRST','01234567890123456789012345') into Result from dual;

  select substr(result,1,8)||'-'||substr(result,9,4)||'-'||substr(result,13,4)||'-'||substr(result,17,4)||'-'||substr(result,20,12) into kk from dual;

  return(kk);

  end fun_createrandom;

  /

  SQL> select fun_createrandom from dual;

  FUN_CREATERANDOM

  --------------------------------------------------------------------------------

  03525205-5112-4224-9870-055638840111

  SQL> select fun_createrandom from dual;

  FUN_CREATERANDOM

  --------------------------------------------------------------------------------

  62235313-4235-4831-0357-751601449968

  SQL> select fun_createrandom from dual;

  FUN_CREATERANDOM

  --------------------------------------------------------------------------------

  72604958-5786-4943-9212-255000333009

  SQL> spool off;