当我运行这个查询时,结果没有正确排序。
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/