我有从
开始的号码列表100000000000000000
到
100000000000999999
始终为 18 位数字。
现在,我想在100000000000000000和100000000000999999之间生成随机数。 (需要18位数字)
declare
cursor c1 is select * from testNumbers k for update;
minNumbers INTEGER;
maxNumbers INTEGER;
begin
select LENGTH(min(someColumn)) into minNumbers from testNumbers;
select min(someColumn) into maxNumbers from testNumbers;
open c1;
loop fetch c1 into i;
exit when c1%notfound;
DBMS_OUTPUT.PUT_LINE(TRUNC(dbms_random.value (minNumbers, maxNumbers)));
end loop;
close c1;
end;
但是我得到了 16 或 17 位数字,例如:
58637356300054590
1502386622593360
34871420042208564
2696370666671141
62734000905097141
当我更改为:
select max(someColumn) into maxNumbers from testNumbers
没有帮助。
使用
DBMS_RANDOM
套件:
SELECT FLOOR(
DBMS_RANDOM.VALUE(
100000000000000000,
100000000001000000
)
) AS random_value
FROM DUAL;
可以随机输出:
随机_值 |
---|
100000000000102434 |