database - Oracle 在两次使用同一列时无法正确排序

标签 database oracle sorting date

当我运行这个查询时,结果没有正确排序。

SELECT 
  SYSDATE - datecolumn a,
  SYSDATE - datecolumn sortcolumn
FROM atable
ORDER BY sortcolumn

产生:

2576.780243055555555555555555555555555556
2586.297013888888888888888888888888888889
2342.294479166666666666666666666666666667
2617.297476851851851851851851851851851852
2624.855104166666666666666666666666666667
2624.855138888888888888888888888888888889
2624.854236111111111111111111111111111111
2372.296643518518518518518518518518518519
2645.257800925925925925925925925925925926
2403.294756944444444444444444444444444444
2676.297696759259259259259259259259259259

删除第一行 (SYSDATE - datecolumn a,) 后,一切正常。发生这种情况有什么特别的原因吗?

最佳答案

这似乎是一个错误。此行为看起来类似于 bug 8675087,据称已在 11.2.0.2 中修复 - 实际上我无法为此重现测试用例。但我仍然看到你在该版本(在 SQL Fiddle 上)和 11.2.0.3 中的行为,所以这很相似但不完全相同......

如果这给您带来了真正的问题,并且您找不到满意的解决方法(例如交换列顺序;如果您的 sortcolumn 是第一个使用 的表达式sysdate 似乎没问题,但在实际查询中交换列可能不方便)那么您应该向 Oracle 提出服务请求。

关于database - Oracle 在两次使用同一列时无法正确排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23634840/

相关文章:

javascript - 按特定键值对对象数组排序 | Javascript

mysql - MySQL 是否可以使用复合索引,其中一个字段是 WHERE 字段 > 0?

mysql - 连接多个表时删除重复行 - Mysql

oracle - 如何将 "GMT+5.5_(INDIA) "转换为时区区域 "Asia/Kolkata"

java - 创建表后立即插入行 - Oracle

java - 如何为 ArrayList 实现归并排序?

ruby - 为什么我们可以在 block 中使用数组索引来在ruby中进行哈希排序?

mysql - 将 PostgreSQL 转储转换为 MySQL 转储

c# - 如何唯一标识一个计算机程序?

sql - bool 给出无效数据类型 - Oracle