<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 60,comments - 71,trackbacks - 0

        當我們獲取數據時,可能會有這樣的需求,即每次從表中獲取數據時,是隨機獲取一定的記錄,而不是每次都獲取一樣的數據,這時我們可以采取Oracle內部一些函數,來達到這樣的目的.

       1) select * from (select * from tablename order by sys_guid()) where rownum < N; 
       
    2) select * from (select * from tablename order by dbms_random.value) where rownum< N; 
       
    3) select *  from (select * from table_name sample(10)   order by trunc(dbms_random.value(01000)))  where rownum < N;

       說明: sample(10)含義為檢索表中的10%數據,sample值應該在[0.000001,99.999999]之間.

       其中 sys_guid() 和 dbms_random.value都是內部函數,通過這樣的方法,就可以實現我們的需求了.

       注:
            在使1)方法時,即使用sys_guid() 這種方法時,有時會獲取到相同的記錄,即和前一次查詢的結果集是一樣的,我查找了相關資料,有些說是和操作系統有關,在windows平臺下正常,獲取到的數據是隨機的,而在linux等平臺下始終是相同不變的數據集,有些說是因為sys_guid()函數本身的問題,即sys_guid()會在查詢上生成一個16字節的全局唯一標識符,這個標識符在絕大部分平臺上由一個宿主標識符和進程或進程的線程標識符組成,這就是說,它很可能是隨機的,但是并不表示一定是百分之百的這樣.
          
           所以,為確保在不同的平臺每次讀取的數據都是隨機的,我們大多采用2)和3)兩種方案,其中2)方案更常用.3)方案縮小了查詢的范圍,在查詢大表,且要提取數據不是很不多的情況下,會對查詢速度上有一定的提高,

       另:在Oracle中一般獲取隨機數的方法是:

    select trunc(dbms_random.value(01000)) from dual; (0-1000的整數)
    select dbms_random.value(
    01000) from dual; (0-1000的浮點數)




    posted on 2008-09-02 18:13 henry1451 閱讀(401) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 欧美三级在线电影免费| 免费看无码特级毛片| 好爽又高潮了毛片免费下载| 亚洲精品网站在线观看你懂的| 91香焦国产线观看看免费| 亚洲精品私拍国产福利在线| 久久久久成人精品免费播放动漫| 人妻巨大乳hd免费看| 一级毛片直播亚洲| 91嫩草私人成人亚洲影院| 免费无码毛片一区二区APP| 亚洲精品视频免费看| 91嫩草国产在线观看免费| 亚洲91精品麻豆国产系列在线| 精品熟女少妇AV免费观看| 亚洲精品中文字幕| 免费v片视频在线观看视频| 国产免费牲交视频免费播放| 亚洲区小说区图片区QVOD| 最近2022中文字幕免费视频| 国产精品高清视亚洲一区二区| 日本不卡高清中文字幕免费| 一区二区三区视频免费| 国产av天堂亚洲国产av天堂| 羞羞视频免费观看| 亚洲热妇无码AV在线播放| 2019中文字幕在线电影免费| 亚洲成a人无码亚洲成av无码| 亚洲国产成人精品无码久久久久久综合| 一级毛片a免费播放王色电影| 亚洲AV无码成人精品区在线观看 | 亚洲av成人中文无码专区| 亚洲精品国产va在线观看蜜芽| 国产亚洲精品免费视频播放| 亚洲首页在线观看| 四虎AV永久在线精品免费观看| 免费无码作爱视频| 亚洲国产午夜精品理论片在线播放| 亚洲一区二区高清| 久热中文字幕在线精品免费| 深夜a级毛片免费视频|