当前位置:  开发笔记 > 编程语言 > 正文

逐行ID如何在Oracle中运行?

如何解决《逐行ID如何在Oracle中运行?》经验,为你挑选了1个好方法。

我有一张叫做积分的桌子.我执行了以下查询,并期望一个列表的词典排序列表的ROWID,但没有发生.order by rowid如何对行进行排序?

select rowid from points order by rowid

我有像下面这样的行

    AAAE6MAAFAAABiSAAA

    AAAE6MAAFAAABi + AAA

第二行的词典比第一行小.那么,如果不是lecxicographical排序,那么排序标准是什么?



1> a_horse_with..:

为什么您看到的只是用于显示目的的表示.

实际的rowid包含有关数据块的二进制信息,块中的行,块所在的文件以及表的内部对象id(有关详细信息,请参阅手册)

当您使用order by rowidOracle时,根据该(内部)信息对行进行排序,而不是基于"字符串表示".

如果您将查询更改为:

select rowid, 
       dbms_rowid.rowid_relative_fno(rowid) as rel_fno,
       dbms_rowid.rowid_row_number(rowid) as row_num,
       dbms_rowid.rowid_block_number(rowid) as block_num, 
       dbms_rowid.rowid_object(rowid)
from points 
order by rowid

你很可能会看到rownumber排序背后的逻辑.

请注意,值dbms_rowid.rowid_object()始终相同.如果你的表中只有两行,那么两者最有可能也有相同的值rowid_block_number()

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有