码迷,mamicode.com
首页 > 数据库 > 详细

Oracle如何实现从特定组合中随机读取值

时间:2015-05-15 01:09:58      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

在这里,我们会用到DBMS_RANDOM包和CASE WHEN语句,思路如下:

一、利用DBMS_RANDOM.RANDOM函数随机生成数值,然后对数值进行取模,如果我们要在10个元素中随机读取的话,那我们需要对10进行取模。

二、再将取模后的值利用CASE WHEN语句与元素进行关联。

譬如,我有一个组合,里面包含“北京”,“上海”,“广州”,“深圳”,“武汉”五个元素,想从这五个元素中随机读取值来填充表的某个字段。

首先,创建测试表

SQL> create table test(loc varchar2(2 char));

Table created.

构造能随机读取元素的SQL语句

select case mod(abs(dbms_random.random),5)
       when 1 then 北京
       when 2 then 上海
       when 3 then 广州
       when 4 then 深圳
       else 武汉 end "LOC"
from dual;

大批量填充test表的loc字段

begin
  for i in 1..10 loop
     insert into test values(case mod(abs(dbms_random.random),5)
          when 1 then 北京
          when 2 then 上海
          when 3 then 广州
          when 4 then 深圳
          else 武汉 end );
  end loop; 
end;

最后生成的结果如下:

SQL> select * from test;

LOC
--------
武汉
广州
上海
北京
上海
武汉
北京
上海
武汉
深圳

10 rows selected.

 

Oracle如何实现从特定组合中随机读取值

标签:

原文地址:http://www.cnblogs.com/ivictor/p/4504786.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!