oracle要对一个字段产生随机数

本文介绍了一种通过修改数据库中图片URL的方式,将原本单一域名负载分散到四个不同域名上,以此提升图片加载速度的方法。主要步骤包括使用随机数初步替换URL中的数字,并进一步手动调整以确保各域名间的负载均衡。
需求 对方我公司的产品是一路捞导航网站。主页图片刷新的有点慢,就想把原来只用一个域名来刷新图片的过程改成四个域名来刷新,四个并行刷新可以提高速度,交给我操作数据库的任务就是:修改表中的关于图片的字段的内容,
SQL> select MAINIMAGEURL   from  test_nav_en_us.tb_type_main where rownum <6;

MAINIMAGEURL
--------------------------------------------------------------------------------

http://m0.16lao.com/v1/tfs/T1EaJTB7dj1RXrhCrK.jpg


我的任务是要把m后面的0这个数字平均改成0,1,2,3这样就把一个域名改成了四个,具体怎么实现我不太清楚。
操作步骤
1,利用拼接和截取以及round对m后的数字取随机数,
update TB_PAD_INFO_INDEX t  
set t.MAINIMAGEURL=substr(t.MAINIMAGEURL,1,8)||round(dbms_random.value(0,3),0)||substr(t.MAINIMAGEURL,10,100);
2,因为是随机数,肯定到不到完全平均的效果,所以先查看现在分配的结果,
select substr(t.MAINIMAGEURL,9,1),count(*) from tb_pad_info_index t
group by substr(t.MAINIMAGEURL,9,1);

 1 453
 3 246
 0 214
 2 447
3,根据上面的结果,把m1给m0分配120个,再把m2给m3分配100,借助伪列rownum:
update TB_PAD_INFO_INDEX t
set t.MAINIMAGEURL=substr( t.MAINIMAGEURL,1,8)||0||substr( t.MAINIMAGEURL,10,100)
where  substr( t.MAINIMAGEURL,9,2)='m1' and rownum<=120;
update TB_PAD_INFO_INDEX t
set t.MAINIMAGEURL=substr( t.MAINIMAGEURL,1,8)||3||substr( t.MAINIMAGEURL,10,100)
where  substr( t.MAINIMAGEURL,9,2)='m2' and rownum<=100;
反正目的就是尽可能的平均一下。
再次查看分配结果:
select substr(t.MAINIMAGEURL,9,1),count(*) from tb_pad_info_index t
group by substr(t.MAINIMAGEURL,9,1);
 1 333
 3 346
 0 334
 2 345

其实如果数据量不是很大的话,可以借助excl工具,和UE编辑器,以及plsql\developer 完成任务。














来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29654823/viewspace-1600232/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29654823/viewspace-1600232/

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值