我有3列的表格: - PRIMARY_KEY
- AMOUNTS
- RAND_AMOUNTS
(所有空值)如何使用Oracle範圍內的隨機值更新表列?
我想使用下面的公式來填充RAND_AMOUNTS
柱:
AMOUNT*(0-100 random value)/100
因此,例如,如果金額排讓我們假設爲10,併爲該行生成的隨機值爲10然後RAND_AMOUNT
應該是10 * 10/100 = $1
我有3列的表格: - PRIMARY_KEY
- AMOUNTS
- RAND_AMOUNTS
(所有空值)如何使用Oracle範圍內的隨機值更新表列?
我想使用下面的公式來填充RAND_AMOUNTS
柱:
AMOUNT*(0-100 random value)/100
因此,例如,如果金額排讓我們假設爲10,併爲該行生成的隨機值爲10然後RAND_AMOUNT
應該是10 * 10/100 = $1
dbms_random()是你在找什麼:
UPDATE the_table
SET rand_amount = (amount * dbms_random.value(0, 100))/100
WHERE amount IS NOT NULL
使用:
dbms_random.value(lower-value-limit, upper-value-limit)
應該做你要找的內容。
update yourtable set rand_amounts = dbms_random.value * amount;
誰downvoted ...請解釋! – 2011-04-26 17:12:27
+1做得很好。這值得讚賞。 @ hal9000,可能是由於沒有意識到'dbms_random.value'返回與'dbms_random.value(0,100)/ 100'相同的東西而被downvoted。他們的休息:) – 2011-04-27 05:33:08
和1至4(含)之間的整數:'ceil(dbms_random.value()* 4)' – 2015-07-03 09:18:18
謝謝你的工作完美:)我怎麼沒有看到我的rand_amount精度都是整數嗯。 – venky80 2011-04-26 17:01:39
@ venky80 - 檢查rand_amount列以查看它是否以0的比例(例如數字(9,0))定義。如果是這樣,它將只存儲整數,因爲scale是小數點後允許的位數。 – Craig 2011-04-26 17:49:27