我有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