【问题标题】:Rails PostgreSQL sort by integer value of stringRails PostgreSQL 按字符串的整数值排序
【发布时间】:2017-03-04 00:09:11
【问题描述】:

在我的 Rails 应用程序上开发数据库架构时,我犯了一个战略错误

现在我必须使用

实现按价格功能排序
MyModel.order('price DESC')

price是数据库中的字符串类型,例如导致50大于2000

有没有办法在不改变数据库结构的情况下实现这样的.order()

编辑:

我为价格列切换到正确的类型(整数)。重构只花了我一个小时。

【问题讨论】:

  • 你使用的是哪个 rdbms?
  • 我正在使用 PostgreSQL
  • 我认为如果可能的话,最好将列类型从字符串迁移到浮点数。否则你应该投列:ORDER BY price::float.
  • 是的,Oleksandr Avoyants 是对的,您真的应该只迁移数据库表以获得正确的值。如果你一直在寻找解决办法,你真的会阻碍自己。

标签: ruby-on-rails postgresql ruby-on-rails-4 activerecord ruby-on-rails-5


【解决方案1】:

使用 PostgreSQL,您需要将字符串转换为 integer/float/decimal(在您决定 100% 不会将列类型更改为 正确 之一之后) :

MyModel.order('price::integer DESC')

考虑一下这个answer,让它运行得更快。

【讨论】:

    猜你喜欢
    • 2019-01-13
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多