Oracle如何实现从特定组合中随机读取值
2016-03-10 15:14
363 查看
在这里,我们会用到DBMS_RANDOM包和CASE WHEN语句,思路如下:
一、利用DBMS_RANDOM.RANDOM函数随机生成数值,然后对数值进行取模,如果我们要在10个元素中随机读取的话,那我们需要对10进行取模。
二、再将取模后的值利用CASE WHEN语句与元素进行关联。
譬如,我有一个组合,里面包含“北京”,“上海”,“广州”,“深圳”,“武汉”五个元素,想从这五个元素中随机读取值来填充表的某个字段。
首先,创建测试表
构造能随机读取元素的SQL语句
大批量填充test表的loc字段
最后生成的结果如下:
一、利用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之DBMS_RANDOM包详解
- Oracle 11gR2静默安装 & 命令行安装
- Oracle身份认证方式
- 一键准备Oracle安装
- Oracle常用函数汇总
- Oracle工具之DBNEWID
- Oracle闪回技术(Flashback)
- Oracle常见错误
- Linux下如何删除Oracle
- Oracle循环语句
- Oracle IF & CASE语句
- Oracle Concept
- Oracle参数篇
- Oracle Dataguard之failover
- Oracle Dataguard之switchover
- Oracle Dataguard之Real-Time Apply
- Oracle Dataguard之物理standby的基本配置
- Oracle Linux
- 查看oracle创建表空间的sql语句
- 使用ora2pg完成从oracle到postgresql的迁移工作