在oracle中,按较低者排序会产生不同的结果

在oracle中,按较低者排序会产生不同的结果,oracle,Oracle,我想按小写字母对标签排序,但我不知道为什么会有两个不同的结果? 我希望第一个结果一定是这样的: 1A A_Test Btest chrismax Chrismax T test Xmax 2014 小写的“chrismax”和“chrismax”是相同的。数据库可以按照自己喜欢的方式对这两行进行排序。如果您想要自然排序,只需从排序条件中删除lower。您当前所做的是将其强制转换为lower,然后进行排序,这将导致在相同字符串上产生不可预测的结果cc,因此它将是您想要的,不需要任何额外的魔

我想按小写字母对标签排序,但我不知道为什么会有两个不同的结果?

我希望第一个结果一定是这样的:

1A  
A_Test
Btest
chrismax
Chrismax
T test
Xmax 2014

小写的“chrismax”和“chrismax”是相同的。数据库可以按照自己喜欢的方式对这两行进行排序。

如果您想要自然排序,只需从排序条件中删除
lower
。您当前所做的是将其强制转换为lower,然后进行排序,这将导致在相同字符串上产生不可预测的结果
c
c,因此它将是您想要的,不需要任何额外的魔法。首先,请提供文本而不是图片。其次,一旦小写的
chrismax
chrismax
是相同的。。。无法区分它们,因此顺序是随机的。如果您希望它是非随机的,您需要添加另一个ORDER BY,即
ORDER BY lower(label)asc,label asc
如果我使用ORDER BY而不使用lower,第二个sql的结果是Sams和Sams,那么为什么sql的顺序相同,但结果不同呢?请阅读kristianp的答案和Ben的评论。他们解释得很好。