當前位置:首頁 » 數據倉庫 » oracle資料庫隨機數據
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

oracle資料庫隨機數據

發布時間: 2022-08-03 21:17:34

Ⅰ 如何在oracle資料庫中每次隨機查出記錄不同的n條記錄

既然是隨機,就很難保證是不重復,除非你每次查詢完後把查詢出來的更新掉狀態。
select * from (select * from table order by dbms_random.random)
where rownum < n
根據隨機規則排序,取前n個
但是會出現重復的

Ⅱ 在oracle中,如何從一張表中查詢一條隨機記錄

這幾天工作上的需要,要從一個比較大的表中隨機取出一條記錄,oracle 不像MS sqlSERVER那樣,直接用Select TOP 1 * From TABLE Order By NewID(),就能高效的隨機查出一條記錄。經過一翻折騰,用一個有90萬條記錄的表t_id,只有一個gameid欄位,該欄位上沒有索引,表裡就是從100000到999999一連串的數據記錄,進行測試:
方法1.
採用rownum和dbms_random.value,平均用時5秒,這個效率確實是太低了,對於小表應該還行,大表那就太不適合了。
declare
n_id number(6);
begin
SELECT gameid into n_id FROM(SELECT gameid FROM t_id T ORDER BY dbms_random.value()) WHERE ROWNUM=1;
dbms_output.put_line(to_char(n_id));
end;
/
方法2.
採用oracle sample語法,設置隨機樣本是1%,結果用時0.01左右,速度是相當快的,但是根據官網的說法,採用sample採集特性可能會產生不準確的結果集,我在測試中是沒有碰到不正確的結果。但是有個問題,就是隨機的結果分布很不平均,結果幾乎都分內存卡在100000-200000的記錄中。效率雖好,但並沒有達到很好的隨機效果,如果對於結果的要求不是很高的,這個方法是相當不錯的。
declare
n_id number(6);
begin
SELECT gameid into n_id FROM t_id SAMPLE (1) WHERE ROWNUM = 1;
dbms_output.put_line(to_char(n_id));
end;
/
方法3.
採用minus語法,先隨機獲取一個在表總記錄數范圍內的一個隨機數,再通過rownum查詢兩個結果集只相差一條記錄,用minus相減留出事先隨機數的那條記錄,平均用時大概1秒,隨機數越小,查詢速度越快,當隨機數是20000時,用於0.016秒。該方法雖然
能得到很有隨機效果,但效率比較不上該方法2. 對效率要求一般的話, 還是可以考慮使用的。
declare
n_count int:=0;
n_rand_num int:=0;
n_id number(6);
begin
SELECT COUNT(*) INTO n_count FROM t_id;
SELECT trunc(dbms_random.value(1,n_count+1)) INTO n_rand_num FROM DUAL;
select gameid into n_id from (SELECT gameid FROM t_id T WHERE rownum<n_rand_num
minus
SELECT gameid FROM t_id T WHERE rownum<n_rand_num-1);
dbms_output.put_line(to_char(n_id));
end;
/

Ⅲ oracle如何生成隨機數

select
to_char(sysdate,'yyyymmdd')||lpad(round(dbms_random.value(1,999999999)),9,0)
from
al;
解釋一下,to_char(sysdate,'yyyymmdd')是求得日期,也就是當前日期的年月日,||是連接符號
round(dbms_random.value(1,999999999)是取隨機數的整數位,round是四捨五入,從1-99999999之間取
lpad(9,0)是個左補0函數,如果選出的隨機數為1,則前邊就是8個0補充

Ⅳ orACLE產生隨機數的函數

產生一個介於指定范圍之內的38位精度的隨機數sql>
select
dbms_random.value(1,
9999)
from
al;
dbms_random.value(1,9999)-------------------------
4261.38448如果你是要一個
4位的整數
(也就是最小1000,
最大
9999)
select
trunc(
dbms_random.value(1000,
9999)
)
from
al;

Ⅳ oracle 命令設置值為隨機數的命令

先來100發
select round(dbms_random.value(50,59),0) random_value from al connect by rownum<=100;
RANDOM_VALUE

1 59

2 54

3 50

4 54

5 59

6 58

7 57

8 57

9 56

10 52

11 52

12 59

13 57

14 50

15 58

16 53

17 56

18 55

19 53

20 57

21 56

22 54

23 52

24 53

25 58

26 52

27 53

28 51

29 56

30 54

31 57

32 55

33 57

34 54

35 53

36 50

37 54

38 59

39 56

40 51

41 57

42 54

43 55

44 57

45 52

46 56

47 57

48 58

49 51

50 59

51 50

52 51

53 58

54 54

55 59

56 58

57 56

58 54

59 55

60 55

61 53

62 55

63 53

64 53

65 56

66 55

67 59

68 52

69 59

70 55

71 54

72 54

73 50

74 57

75 55

76 58

77 51

78 58

79 52

80 50

81 51

82 53

83 52

84 55

85 58

86 57

87 54

88 54

89 58

90 58

91 56

92 57

93 55

94 58

95 54

96 54

97 50

98 55

99 59

100 52

Ⅵ oracle 怎樣在指定數據當中生成隨機數

select trunc(dbms_random.value(1,4)) from al;
類似的你弄下就可以了 不懂問我

Ⅶ oracle資料庫,如何根據概率隨機查詢取四條數據呢

select * from tableName sample(10) where rownum<5;
sample(10)代表從tableName 表中隨機取到10%的數據 rownum<5 取4條

Ⅷ oracle把資料庫某個欄位更新為1-4隨機整數

update table1
set col1 = trunc(dbms_random.value(1,5))

Ⅸ [Oracle]從一個表中隨機取出6條記錄的sql語句

1、打開sql server 可視化工具。

Ⅹ Oracle資料庫中如何在某一列中插入sql生成的隨機數

insert into a(ID,姓名,性別) values (trunc(DBMS_RANDOM.value(1,100)),'小明','男');
commit;

----trunc(DBMS_RANDOM.value(1,100)) 隨機生成一個1~100以內的整數。