我试图按距离排序,但我的距离和输出如下:
2m4f
2m5.5f
2m5f
2m6f
2m7f
3m
正如你所看到的,2m5.5f在2m.5f之前出现
有没有,我可以做到这一点,所以.5f的任何价值都将来自" 2.5f"如下所示
2m4f
2m5f
2m5.5f
2m6f
2m7f
3m
我的代码是:
$sqlhorses = "SELECT distance,Place,Runners FROM `horsesrp`
WHERE
`Horse` = '".$horse."' order by distance";
注意:距离存储为Varchar(50)
答案 0 :(得分:1)
正如评论和其他答案所述,问题在于您是按字符串排序的。在MySQL和您的字符串中,您可以使用以下方法解决此问题:
order by distance + 0,
substring_index(distance, 'm', -1) + 0
+ 0
在MySQL中执行静默转换。它将前导数字转换为数字,这是您想要订购的目的。
答案 1 :(得分:0)
这是按varchar字段排序时的预期结果。特殊字符等于低于字母字符。
您需要找到一种新的方式来存储数据,或者只是在应用程序代码中对数据进行排序