在SQL中按字母顺序排列名称

时间:2013-08-08 14:30:37

标签: java oracle sorting sql-order-by uppercase

我有需要按字母顺序排序的名称列表,所以我在所有值上执行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 ??

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

2 个答案:

答案 0 :(得分:2)

当您转换为大写时,您会获得JaCoBsOnJACOBson等名称的关联,并且是:Oracle会以(看似)随机顺序排列关系。要摆脱这种随机性,你需要打破平局。

请注意,大写字母在小写之前排序,因此如果您希望JaCoBsOnJACOBson之前排序作为决胜局,您可以执行以下操作:

ORDER BY UPPER(VALUE), VALUE DESC

答案 1 :(得分:1)

是的,你的猜测是正确的。首先放置JACOBSON行的IMO取决于数据库中的实际行顺序。