使用sys_guid产生随机数

本文介绍了一种使用Oracle的sys_guid()函数结合translate函数生成指定长度随机数字字符串的方法,并通过示例代码展示实现过程及输出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天同事需要创建一个由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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值