2011-04-26 411 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