我试图按距离排序,但我的距离和输出如下:

2m4f
    2m5.5f
    2m5f
    2m6f
    2m7f
    3m

正如你所看到的,2米5.5英尺在2米5英尺之前
在那里,通过它,我可以使它的任何值。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)

最佳答案

正如注释和其他答案中提到的,问题是您是按字符串排序的。在MySQL和字符串中,可以使用以下方法解决此问题:

order by distance + 0,
         substring_index(distance, 'm', -1) + 0

+ 0在MySQL中执行静默转换。它将前导数字转换为数字,这是您需要的排序目的。

关于php - 在SQL中排序不是100%正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30328661/

10-11 09:29