Oracle如何?從特定組合中隨機讀取值

來源:互聯網
上載者:User

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.

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.