table 中某一列的随机数
Random Numbers of a column of a table
我需要生成不在列中的随机数,
你能帮我吗。
table 是 MI_TABLA
该列是 MI_COLUMNA
非常感谢,
塞尔吉奥
您的问题中没有太多细节,但这可能会帮助您找到一条路。
下面的select得到一个0到500之间的随机值,我把round函数放进去,所以它是整数。
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);
如果随机数选择了您列中的一个值,它不会return任何东西。因此你可能想把它放在一个循环中,直到你得到一个数字。
SELECT to_number(to_char(CURRENT_TIMESTAMP,'yyyymmddhh24missffffff')) 来自双
这是一个长值,但不会生成重复的数字。
但这不是随机数。您不需要检查值是否存在
这是低效的,但可能会向您介绍一些您需要满足非常奇怪的要求的概念。
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;
它的作用是让您为 table 指定您想要的值范围,因为 "random number" 可以是任意大小。然后,它会找到该范围内 未 已经在 table 中的所有值,然后随机选择其中之一。
对于范围内有很多未使用值的 table,它会表现不佳,但对于只有少数未使用值的 table 会表现更好。
我需要生成不在列中的随机数, 你能帮我吗。 table 是 MI_TABLA 该列是 MI_COLUMNA 非常感谢, 塞尔吉奥
您的问题中没有太多细节,但这可能会帮助您找到一条路。
下面的select得到一个0到500之间的随机值,我把round函数放进去,所以它是整数。
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);
如果随机数选择了您列中的一个值,它不会return任何东西。因此你可能想把它放在一个循环中,直到你得到一个数字。
SELECT to_number(to_char(CURRENT_TIMESTAMP,'yyyymmddhh24missffffff')) 来自双
这是一个长值,但不会生成重复的数字。
但这不是随机数。您不需要检查值是否存在
这是低效的,但可能会向您介绍一些您需要满足非常奇怪的要求的概念。
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;
它的作用是让您为 table 指定您想要的值范围,因为 "random number" 可以是任意大小。然后,它会找到该范围内 未 已经在 table 中的所有值,然后随机选择其中之一。
对于范围内有很多未使用值的 table,它会表现不佳,但对于只有少数未使用值的 table 会表现更好。