Home >Database >Mysql Tutorial >Oracle如何实现从特定组合中随机读取值

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-07 16:00:321211browse

在这里,我们会用到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.

本文永久更新链接地址

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn