2011-04-26 40 views
3

我有3列的表格: - PRIMARY_KEY - AMOUNTS - RAND_AMOUNTS(所有空值)如何使用Oracle範圍內的隨機值更新表列?

我想使用下面的公式來填充RAND_AMOUNTS柱:

AMOUNT*(0-100 random value)/100 

因此,例如,如果金額排讓我們假設爲10,併爲該行生成的隨機值爲10然後RAND_AMOUNT應該是10 * 10/100 = $1

回答

6

dbms_random()是你在找什麼:

UPDATE the_table 
    SET rand_amount = (amount * dbms_random.value(0, 100))/100 
WHERE amount IS NOT NULL 
+0

謝謝你的工作完美:)我怎麼沒有看到我的rand_amount精度都是整數嗯。 – venky80 2011-04-26 17:01:39

+1

@ venky80 - 檢查rand_amount列以查看它是否以0的比例(例如數字(9,0))定義。如果是這樣,它將只存儲整數,因爲scale是小數點後允許的位數。 – Craig 2011-04-26 17:49:27

0

使用:

dbms_random.value(lower-value-limit, upper-value-limit) 

應該做你要找的內容。

3
update yourtable set rand_amounts = dbms_random.value * amount; 
+0

誰downvoted ...請解釋! – 2011-04-26 17:12:27

+1

+1做得很好。這值得讚賞。 @ hal9000,可能是由於沒有意識到'dbms_random.value'返回與'dbms_random.value(0,100)/ 100'相同的東西而被downvoted。他們的休息:) – 2011-04-27 05:33:08

+0

和1至4(含)之間的整數:'ceil(dbms_random.value()* 4)' – 2015-07-03 09:18:18