色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

用Oracle的解析函數(shù)發(fā)現(xiàn)序列間隙

瀏覽:139日期:2023-11-15 18:18:36
數(shù)據(jù)庫表格中經(jīng)常用到值序列。無論是作為數(shù)據(jù)本身自然產(chǎn)生的,還是由Oracle 的序列對象分配的,它的目的就是用一個唯一的、遞增的數(shù)字給每一行編號。 在編號的過程中,產(chǎn)生間隙的原因多種多樣。假如一個存儲過程從一個序列中挑選某個數(shù)字,定為本地變量,但是從來不用它,這個數(shù)字就丟失了。它將不能再返回到原序列中,結(jié)果就造成數(shù)值序列中存在一個間隙。關(guān)系型數(shù)據(jù)庫模型中不必擔(dān)心這一點。但是有時候人們在意這一點,這些人想知道是哪些數(shù)字丟失了。 一個顯而易見的方式就是用PL/SQL:在已排序指針中循環(huán),并且用一個本地變量進行存儲,把每一個數(shù)值與其前一行的進行比較。這種方法的問題在于效率很低,速度很慢。另外一個不常用的解決辦法就是對表格做一個自合并,實質(zhì)也就是用某種標準使每一行與其前一行相匹配。這種方法很難編寫代碼。 Oracle的解析函數(shù)為檢查間隙提供了一種要快捷得多的方法。它們使你在使用完整的、面向集合的SQL處理的同時,仍然能夠看到下一個行(LEAD)或者前一行(LAG)的數(shù)值。 下面是這些函數(shù)的格式: {LEAD LAG} (value_eXPression, offset, default) OVER ([PARTITION BY expr] ORDER BY expr) 通常,value_expression是一個你想要檢索的數(shù)據(jù)列。參數(shù)offset是指你想要往前或往后讀取的行數(shù),default則是到達任意一個分區(qū)的開頭或者結(jié)尾(即沒有與之相匹配的行)時返回的數(shù)值。 列表A中的腳本是一系列從工作地傳感器自動收集來的數(shù)據(jù)。傳感器裝置自動給每一個測量值編上號,我們要找出結(jié)果有沒有缺失。 在列表B中,我們將數(shù)據(jù)按照測量值編號排序,運用LAG函數(shù),把偏移量設(shè)置為1,使得每一行與其前一行對應(yīng)起來。第一行將沒有對應(yīng)量,所以相應(yīng)地,將返回默認值0。因為間隙不可能發(fā)生在第一行,所以我們通過之前要求測量值大于0而將其刪除。 剩下的就是一組虛擬的行,顯示的是前一行的測量值編號(“before_gap”)和當前行的測量值編號(“after_gap”)。假如兩者之差大于1,就說明這兩行之間存在間隙。 同時也要注重到,WITH子句在查詢開始的時候把解析子查詢命名為“aquery”。那么我們就可以在主SELECT 語句中的WHERE 子句中訪問“aquery”中的數(shù)列。
主站蜘蛛池模板: 成人一级黄色片 | 性欧美f| 欧美成人做性视频在线播放 | 99精品久久精品一区二区 | 亚洲精品视频免费在线观看 | 美女网站18 | 久久国产夜色精品噜噜亚洲a | 欧美大片毛片大片 | 四虎免费大片aⅴ入口 | 国产v日韩v欧美v精品专区 | 欧美日韩一区二区三区视视频 | 日韩免费一级 | 欧美成人做性视频在线播放 | 久久久国产99久久国产一 | 免费观看成年人网站 | 亚洲专区在线视频 | 国产精品亚洲成在人线 | 欧美同性videos在线可播放 | 欧美亚洲另类在线 | 久草视频在线免费播放 | www国产91| 欧美a一 | 99久久精品国产片久人 | 欧美精品在线视频观看 | 国产亚洲一区二区三区 | 国产在线精品观看一区 | 午夜免费片在线观看不卡 | 看三级网站| 2020夜夜操| 久久久精品影院 | 国产一区三区二区中文在线 | 精品性久久 | 国产成人成人一区二区 | 亚洲精品国产精品精 | 99视频在线观看高清 | 三级黄色免费看 | 一级做a爰片久久毛片欧美 一级做a爰片久久毛片人呢 | 日韩专区在线 | 成年人精品视频 | 国产亚洲福利精品一区二区 | 欧美日韩视频免费播放 |