我有需要按字母顺序排序的名称列表,所以我在所有值上执行UPPER,并在ORDER_BY上显示排序。

HashMap<String, Object> params = new HashMap<String, Object>();
params.put( "ORDER_BY", "UPPER (VALUE)" );
ArrayList<DataObject> results = (ArrayList<DataObject>) dao.getDataObjects( params, conn );


排序工作完全正常,但我想进一步了解以下情况。当我为名称JaCoBsOn,JACOBson排序时的示例。 JACOBson将是第一个,JaCoBsOn是下一个,为什么不首先使用JaCoBsOn,然后再选择JACOBson呢?

我的猜测是因为它将名称转换为大写。因此,在对名称JaCoBsOn和JACOBson进行排序时,将其视为JACOBSON并以随机顺序显示吗?

最佳答案

当转换为大写字母时,您会得到JaCoBsOnJACOBson之类的名字的联系,是的:Oracle将以(似乎)随机顺序安排联系。要摆脱这种随机性,您需要一个决胜局。

请注意,大写字母在小写字母之前排序,因此,如果您希望JaCoBsOnJACOBson之前作为抢七游戏进行排序,则可以执行以下操作:

ORDER BY UPPER(VALUE), VALUE DESC

关于java - 在SQL中按字母顺序排列名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18128719/

10-11 09:24