【问题标题】:Ordering by String that starts with Number - ActiveRecord按以数字开头的字符串排序 - ActiveRecord
【发布时间】:2021-03-04 03:25:14
【问题描述】:

我正在构建 Rails 应用程序并尝试按以数字开头的字符串列对数据库中的记录进行排序。
一开始如何按号码订购?
我宁愿按 SQL 顺序排序,也不愿按 ruby​​ 方法排序。有什么办法吗?

expected order
1.record1
2.record2
10.record10
present order
1.record1
10.record10
2.record2

【问题讨论】:

    标签: mysql ruby-on-rails activerecord natural-sort


    【解决方案1】:

    您可以order by field + 0field 的数据类型隐式更改为数字:

    Model.order("field + 0 ASC")
    
    # similar `string`.to_i in Ruby
    # `1.record1`   => 1
    # `10.record10` => 10
    

    【讨论】:

      猜你喜欢
      • 2019-10-29
      • 1970-01-01
      • 2019-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多