关闭

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

发表于:2015-5-15 09:45

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:iVictor    来源:51Testing软件测试网采编

  在这里,我们会用到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.
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号