【问题标题】:Sort numbers (and numbers+letters) with sqlite使用 sqlite 对数字(和数字+字母)进行排序
【发布时间】:2011-07-08 13:15:14
【问题描述】:

我正在尝试使用 Sqlite 对 VarChar 字段进行排序。

该字段可以包含数字或数字+字母,但我需要按数字顺序排序,如下所示:

1 1a 1b 5 5倍 5年 10 10天 10e 10g1 11 11a 11b 100c 100f

有什么想法吗?我已经能够做到这一点......它接近(但不完全)我需要的东西:

用'00000'填充字段的开头,然后对第一个五个字母进行排序

【问题讨论】:

    标签: sql sqlite sorting sql-order-by


    【解决方案1】:

    简单

    select col from tbl order by col*1, col
    

    【讨论】:

    • 不错!但它只适用于开头的数字:“10g9”和“10g10”的排序顺序错误。
    • @dan true,但它适用于上述所有数据,并且绝对适用于格式“数字+字母”(数字然后字母)
    • 字母+数字的情况怎么办?例如A1、A2、A10 等?
    • Thx 帮助解决了我们遇到的排序问题
    【解决方案2】:

    使用内置函数没有简单的方法可以做到这一点。使用sqlite3_create_collation(或您首选编程语言中的等效包装器)定义实现natural sort 的字符串比较函数。

    【讨论】:

      猜你喜欢
      • 2012-04-26
      • 2018-07-29
      • 2021-04-04
      • 1970-01-01
      • 1970-01-01
      • 2016-08-05
      • 2013-08-02
      • 1970-01-01
      • 2015-10-14
      相关资源
      最近更新 更多