在oracle 数据伪列 rowid中删除重复的数据时。为什么数据插入的早,rowid 就小啊?我看不出来哪里小了

如题所述

比较简单的方法是ROWID最后一位的字母越靠前,ROWID就越小。因此,最先插入的记录的ROWID最后一位是A,然后依次是B、C、D……

复杂一点的方法,可以ORACLE自带的DBMS_ROWID包,用法如下:

SQL> select dbms_rowid.rowid_row_number(rowid) N,rowid,t.empno from EMP_TEMP t;

         N ROWID                   EMPNO
---------- ------------------ ----------
         0 AAAXriAAEAAAAGzAAA       7369
         1 AAAXriAAEAAAAGzAAB       7499
         2 AAAXriAAEAAAAGzAAC       7521
         3 AAAXriAAEAAAAGzAAD       7566
         4 AAAXriAAEAAAAGzAAE       7654
         5 AAAXriAAEAAAAGzAAF       7698
         6 AAAXriAAEAAAAGzAAG       7782
         7 AAAXriAAEAAAAGzAAH       7788
         8 AAAXriAAEAAAAGzAAI       7839
         9 AAAXriAAEAAAAGzAAJ       7844
        10 AAAXriAAEAAAAGzAAK       7876
        11 AAAXriAAEAAAAGzAAL       7900
        12 AAAXriAAEAAAAGzAAM       7902
        13 AAAXriAAEAAAAGzAAN       7934

dbms_rowid.rowid_row_number(rowid)的作用就是解析出ROWID的行号。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-26
rowid也是按一种编码顺序进行排序的,是从小到大进行排序,和我们平时1、2、3、4这样,所以你越前面的数据是越最小的ROWID追问

我怎么看都看不出数据越早,ROWID越小

相似回答