? ? ? ? 73
SQL> select to_number('92','xxxxxxxxxxxxxx') from dual;
?TO_NUMBER('92','XXXXXXXXXXXXXX
?------------------------------
? ? ? ? ? ? ? ? ? ? ? ? ? ? 146
SQL> select to_number('24','xxxxxxxxxxxxxx') from dual;
?TO_NUMBER('24','XXXXXXXXXXXXXX
?------------------------------
? ? ? ? ? ? ? ? ? ? ? ? ? ? 36
实际上他们的十进制为73 146 36 73 146 36 73 146
我们转换为2进制然后进行取反同时不足不满8位的如下:
10010010(73) 01001001(146) 00100100(36) 10010010(73) 01001001(146) 00100100(36) 10010010(73) 01001001(146)
那么组合下来如下:
1001001001001001001001001001001001001001001001001001001001001001
其中每一个位图BIT代表一个ROWID他们是连续的,根据起始方位ROWID是能推算出来的。
?这样可以清晰的看到表中字段1的取值(实际上c1 02=1)位图如上,他们是交替出现和我表中数据一样如下:
SQL> select dbms_rowid.rowid_block_number(rowid),dbms_rowid.rowid_row_number(rowid),TESTt_bi2.*? from TESTT_BI2 where dbms_rowid.rowid_block_number(rowid)=835;
?DBMS_ROWID.ROWID_BLOCK_NUMBER( DBMS_ROWID.ROWID_ROW_NUMBER(RO NAME? ? ? ? ? ? ? ? ? ? ? ? ? ID
?------------------------------ ------------------------------ -------------------- -----------
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 1
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 2
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 3
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 1
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 2
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 3
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 6 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 1
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 7 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 2
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 8 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 3
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 9 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 1
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? 10 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 2
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? 11 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 3
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? 12 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 1
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? 13 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 2
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? 14 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 3
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? 15 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 1
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? 16 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 2
? ? ? ? ? ? ? ? ? ? ? ? ? ? 835? ? ? ? ? ? ? ? ? ? ? ? ? ? 17 gaopeng? ? ? ? ? ? ? ? ? ? ? ? 3
?..........
这段如果理解一下就是
?如果SELECT * FROM TEABLE WHERE ID=1
那么这时候位图中取值为1的都是满足条件的,将会被取出(根据ROWID)
关于阅读这部分信息参考
What is 6D DB B6?
?6D = 1101101
?DB = 11011011
?B6 = 10110110
?Read from least significant bit (right to left) and left pad with zeros if not eight bits.
?The resulting map is
?10110110 11011011 01101101
?An important point is to read the bitmap from left to right in hexadecimal in two-byte
?chunks. Read each of those chunks in binary right (least significant bit) to left. If there
?are not eight bits, then these would have been in effect, leading zeros, and are treated
?as such. The underlined zero above demonstrates this.