您好,欢迎访问一九零五行业门户网

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

在这里,我们会用到dbms_random包和case when语句,思路如下:利用dbms_random.random函数随机生成数值,然后对数值进行取模,如
在这里,我们会用到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.
本文永久更新链接地址:
其它类似信息

推荐信息