我需要生成不在列中的随机数, 你能帮我吗。 该表是MI_TABLA 该列是MI_COLUMNA 非常感谢, 塞尔吉奥
答案 0 :(得分:1)
您的问题中没有太多细节,但这可能会帮助您走上正轨。
下面的选择获得0到500之间的随机值。我将圆函数放入,以便它是整数。
select round(dbms_random.value(0,500)) val
from dual
where round(dbms_random.value(0,500)) not in (select MI_COLUMNA from MI_TABLA);
如果随机数选择了列中的值,则不会返回任何内容。因此,你可能想把它放在一个循环中,直到你得到一个数字。
答案 1 :(得分:0)
SELECT to_number(to_char(CURRENT_TIMESTAMP,'yyyymmddhh24missffffff'))FROM DUAL
这是一个很长的值,但它不会生成重复的数字。
但它不是随机数。您无需检查值是否存在
答案 2 :(得分:0)
效率低下,但可能会为您介绍一些您需要的概念。
CREATE TABLE a_table (a_column NUMBER);
WITH params AS
(SELECT 1 min_value,
1000000 max_value
FROM DUAL),
possible_values AS
(SELECT ROWNUM + min_value - 1 a_value
FROM params
CONNECT BY ROWNUM <= max_value - min_value + 1)
SELECT a_value
FROM possible_values
WHERE NOT EXISTS
(SELECT 'value in table'
FROM a_table
WHERE a_table.a_column = a_value)
ORDER BY DBMS_RANDOM.VALUE
FETCH FIRST ROW ONLY;
这样做可以让你为表格指定一系列值,因为&#34;随机数&#34;可以是任何尺寸。然后,它会在表格中找到不是的所有值,然后随机选择其中一个。
对于在该范围内具有大量未使用值的表,它会表现不佳,但对于只有少量未使用值的表会更好。