在這裡,我們會用到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.