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


    在这里,我们会用到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.
  • 相关阅读:
    批量下载B站视频
    MATLAB安装
    printf小结
    hdoj 1874 dijkstra
    斐波那契而数列
    PAT数列排序
    感想
    物理定律的适用范围
    本博客的文章曾经恢复过,但迅速被部分删除(不知名的原因)
    (废墟重建)程序员如何学习书本上的例子 how programmers learn examples of books
  • 原文地址:https://www.cnblogs.com/ivictor/p/4504786.html
Copyright © 2020-2023  润新知