在我的数据库中,我有一个包含等级的名称列的表,例如 1.grade、2.grade 等等。当数字达到 10 或更多时,排序不会按我的意愿进行,因为 10.grade 在排序记录集中排在 2.grade 之前。我知道这是因为字符串排序不同于整数排序。问题是如何以数字方式对这些字符串进行排序。
因为成绩记录是使用 ancestry 插件构建的树的一部分,所以我必须将整个排序代码放入 :order => "(一些对结果进行排序的代码)" 中。
我试过了:order => "CAST(SUBSTRING_INDEX(name, '.') AS SIGNED)"
。但这不起作用。
我在开发环境中使用 SQLite,在生产环境中使用 MySQL。