【问题标题】:Alphabetizing the names in SQL在 SQL 中按字母顺序排列名称
【发布时间】:2013-08-08 14:30:36
【问题描述】:

我有需要按字母顺序排序的名称列表,所以我正在对所有值执行 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 并以随机顺序显示?

【问题讨论】:

  • 你猜对了。

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


【解决方案1】:

当您转换为大写时,您会得到JaCoBsOnJACOBson 等名称的关联,是的:Oracle 将按(看似)随机顺序排列关联。要摆脱这种随机性,您需要一个决胜局。

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

ORDER BY UPPER(VALUE), VALUE DESC

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-29
      • 1970-01-01
      相关资源
      最近更新 更多