3条回答
默认
最新
可以通过包dbms_random生成随机数,请参考,以下文章。
https://blog.csdn.net/yawei_liu1688/article/details/108347483


打赏 0
生成一个全局唯一的、32位的字符串:SYS_GUID()
生成单独的GUID :select SYS_GUID() from dual;
生成多个GUID: select sys_guid() from dual connect by rownum<10;


打赏 0
采纳答案后不可修改和取消
随机就已经意味着不唯一了。
因为随机的每一个值,都与上一个值没有关系。
在有限的数据长度下,比如5位数,当数据所有可能的值都被用完后,比如0-99999,下一个值必然会出现重复。
因此只能先识别出这个值可能的最大个数,比如永远都不会超过8位数,那么这个时候就可以在0-99999999之间取值了。
接下来看你取随机值的目的,是为了保证唯一性还是为了乱序。如果只是为了唯一,建一个序列就好了;如果是为了乱序,那么就需要加一个表,结合随机数,将每次随机到的数存下来,下次取随机数的时候去表里扫一下,发现已经存在就再随机一次(这种方式越到后面效率越低,可能需要更复杂的算法)


打赏 0
回答交流
Markdown
一级标题
二级标题
三级标题
四级标题
五级标题
六级标题
添加图片链接
上传图片
导航目录
Markdown语法参考
请输入正文
提示
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
