我有需要按字母顺序排序的名称列表,所以我在所有值上执行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并以随机顺序显示?
答案 0 :(得分:2)
当您转换为大写时,您会获得JaCoBsOn
和JACOBson
等名称的关联,并且是:Oracle会以(看似)随机顺序排列关系。要摆脱这种随机性,你需要打破平局。
请注意,大写字母在小写之前排序,因此如果您希望JaCoBsOn
在JACOBson
之前排序作为决胜局,您可以执行以下操作:
ORDER BY UPPER(VALUE), VALUE DESC
答案 1 :(得分:1)
是的,你的猜测是正确的。首先放置JACOBSON行的IMO取决于数据库中的实际行顺序。