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

来源:互联网 发布:天刀捏脸数据导入 编辑:程序博客网 时间:2024/06/07 13:07
在这里,我们会用到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.

 

0 0
原创粉丝点击