Oracle 如何获取随机数生成唯一编码

在实际开发中可能经常遇到需要时间戳+随机数生成唯一编码的情况,那么如何实现?

以下介绍一下dbms_random包 中value函数

dbms_random.value该函数提供了38位精度的随机数,

例如:6.89179512313451604112650798782938264414

select dbms_random.value(1,100) from dual;--取100以内的随机数

实际过程中往往我们不需要后面的小数点,那么利用trunc函数截取就好了

select trunc(dbms_random.value(1,100)) from dual;--取100以内的随机整数

那么取时间戳+随机数(如:20220426151734898018)sql如下:

 select TO_CHAR(SYSDATE, 'yyyymmddhh24miss') ||
                     TRUNC(DBMS_RANDOM.VALUE(100000, 999999))
                from dual;

完美!


dbms_random函数包拓展延伸

1、dbms_random.normal:获取正态分布的随机数

select dbms_random.normal from dual;

2、dbms_random.string用法:获取指定字符串

'u','U' : upper case alpha characters only
'l','L' : lower case alpha characters only
'a','A' : alpha characters only (mixed case)
'x','X' : any alpha-numeric characters (upper)
'p','P' : any printable characters

select dbms_random.string('u', 10)
  from dual
union all
select dbms_random.string('U', 10)
  from dual
union all
select dbms_random.string('l', 10)
  from dual
union all
select dbms_random.string('L', 10)
  from dual
union all
select dbms_random.string('a', 10)
  from dual
union all
select dbms_random.string('A', 10)
  from dual
union all
select dbms_random.string('x', 10)
  from dual
union all
select dbms_random.string('X', 10)
  from dual
union all
select dbms_random.string('P', 10)
  from dual
union all
select dbms_random.string('P', 10) from dual;

补充:利用dbms_random.value获取随机日期

select to_char(to_date('2022/01/01','yyyy/mm/dd'),'J') from dual;--2459581
select to_date(trunc(dbms_random.value(2459581,2459581+364)),'J') from dual;--2022年内的任意日期

谢谢!
 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值