mysql-在Rails中使用数字和文本对字符串进行排序
作者:互联网
在我的数据库中,我有一个表,该表的名称列包含成绩,例如1. grade,2.grade等.当数字达到10或更多时,排序将无法进行,因为10.成绩在已排序记录集中的2.成绩之前.我知道这是因为字符串排序不同于整数排序.问题是如何以数字方式对这些字符串进行排序.
因为成绩记录是使用祖先插件构建的树的一部分,所以我必须将整个排序代码放在:order =>中. “(一些对结果进行排序的代码)”.
我已经尝试过:order => “ CAST(SUBSTRING_INDEX(name,’.’)AS SIGNED)”.但这是行不通的.
我在开发环境中使用SQLite,在生产环境中使用MySQL.
解决方法:
尝试这个:
替换常数vale’.用空字符串对列进行“评分”,然后获得数值.将相同的内容转换为int
order by cast(replace(name,'. grade','') as int)
编辑:
根据您的评论,如果它始终不是“等级”,则尝试
order by cast(left(name,LOCATE('.',name,1)-1) as UNSIGNED)
标签:sqlite,ruby-on-rails-3,sql,mysql,ancestry 来源: https://codeday.me/bug/20191127/2074988.html