【问题标题】:How to sort column using ORDER BY RIGHT()如何使用 ORDER BY RIGHT() 对列进行排序
【发布时间】:2021-10-07 19:22:22
【问题描述】:

我正在尝试在 MS ACCESS 中使用 SQL 中的 ORDER BY 对列进行排序,其中值具有不同的数字位置,如图所示。这是一些示例数据

例如,当我使用

ORDER BY RIGHT(Conn_D, LEN(Conn_D) - 1), Pin_D ASC

当有 P20 时,它不识别何时有 P101 - 它会将 P101 识别为“10”而不是“101”,并将 P20 识别为“20”

如何让它将 P101 识别为“101”,同时将 P20 识别为“20”?

【问题讨论】:

  • 20,作为字符串,在 100(字典顺序)之后排序。将值转换为整数以进行正确排序。

标签: sql ms-access


【解决方案1】:

您可以为此使用Mid

ORDER BY VAL(MID(Conn_D, 2)) ASC, Pin_D

【讨论】:

    【解决方案2】:

    如果前缀相同,可以先按长度再按值排序:

    order by len(conn_d) desc, conn_d desc
    

    【讨论】:

    • 这很聪明,但不幸的是前缀不一样。它们将用“J”和“P”表示
    【解决方案3】:

    想出了答案,我需要在取出数字后使用 VAL() 所以

    VAL(ORDER BY RIGHT(Conn_D, LEN(Conn_D) - 1) ASC, Pin_D ASC)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多