首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle ROWID值

Oracle ROWID值
EN

Stack Overflow用户
提问于 2014-06-12 12:12:42
回答 1查看 869关注 0票数 1

我试图使用以下查询从表中获取最后一条记录。

代码语言:javascript
复制
SELECT *
  FROM TABLE1
 WHERE ROWID IN (SELECT MAX (ROWID) FROM TABLE1);

当我检查ROWID时,

值为AAAZA5eAFAAA7AAAA

以及MIN(ROWID)的其他一些值。

这个pseudocolumn是如何在这里得到评估的?它还提到Oracle并不保证这些列的值是有效的,rowids.So ROWID值在架构中不一定是唯一的?

按照doc:数据库中的每一行都有一个地址。您可以通过查询伪pseudocolumn来检查行地址。此伪of的值是表示每一行地址的字符串。这些字符串具有数据类型ROWID。还可以创建包含具有ROWID数据类型的实际列的表和群集。Oracle数据库并不保证这些列的值是有效的rowids。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-12 12:19:15

不能通过此方法获取表中的最后一行。一个rowid 可以改变,这意味着它将不一致,并且OracleOracle绝不会保证它们是按任何顺序创建的。

获取表的最后一行的唯一可靠方法是在那张桌子上

要真正回答您的问题,psuedocolumn的计算方式与您的NLS_SORT参数一致:

代码语言:javascript
复制
select value
  from nls_session_parameters
 where parameter = 'NLS_SORT';

VALUE
------------------------------
BINARY

在我的例子中,它是二进制的,这意味着数据库正在执行二进制排序,以确定一个值是否“大于”另一个值。把它看作是ASCII表A的十进制ASCII值为65,u的值为117。这意味着A被排序在u之上。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24184087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档