我试图使用以下查询从表中获取最后一条记录。
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。
发布于 2014-06-12 12:19:15
不能通过此方法获取表中的最后一行。一个rowid 可以改变,这意味着它将不一致,并且OracleOracle绝不会保证它们是按任何顺序创建的。
获取表的最后一行的唯一可靠方法是在那张桌子上。
要真正回答您的问题,psuedocolumn的计算方式与您的NLS_SORT参数一致:
select value
from nls_session_parameters
where parameter = 'NLS_SORT';
VALUE
------------------------------
BINARY在我的例子中,它是二进制的,这意味着数据库正在执行二进制排序,以确定一个值是否“大于”另一个值。把它看作是ASCII表;A的十进制ASCII值为65,u的值为117。这意味着A被排序在u之上。
https://stackoverflow.com/questions/24184087
复制相似问题