【问题标题】:Natural sorting technique in mysqlmysql中的自然排序技术
【发布时间】:2013-12-16 05:57:23
【问题描述】:

我在 mysql 中执行自然排序时遇到问题。我是一个 mysql 菜鸟,也许这会增加问题

我在我工作的网站上有一个巴士号码列表

列表最初是随机的

总线名称

F1
F22
F10
F15
F7
F90

我尝试使用这个进行自然排序

mysql> SELECT version
-> FROM version_sorting
-> ORDER BY CAST(version AS UNSIGNED), version;

取自http://www.mpopp.net/2006/06/sorting-of-numeric-values-mixed-with-alphanumeric-values/

但是我现在有以下内容

F1
F10
F15
F22
F7
F90

正如我所指出的,我认为上述问题与 mysql 附加到每个字符串的假想零有关,从而使 F7 成为 F70,即 > F22

我希望我的列表是这样的

F1
F7
F10
F15
F22
F90

请大家帮帮我

【问题讨论】:

    标签: mysql sql select sql-order-by substring


    【解决方案1】:

    试试这个:

    SELECT vs.version
    FROM version_sorting vs
    ORDER BY CAST(SUBSTRING(vs.version,2) AS SIGNED), vs.version;
    

    【讨论】:

      【解决方案2】:

      你能试试这个吗?

      SELECT version
      FROM version_sorting
      ORDER BY LENGTH(version),  version;
      

      【讨论】:

      • 对 Length 的使用很好,我从来没想过。
      • @TinTran 在这种情况下,我的和 Saharsh 的查询都正常工作。但在某些情况下,我猜只有LENGTH(..) 会像stackoverflow.com/questions/153633/natural-sort-in-mysql 一样工作
      • 完美。工作没有改变。非常感谢
      • @MuhammadAhmedAbuTalib 不客气,感谢您接受 ;-)
      猜你喜欢
      • 1970-01-01
      • 2010-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多