PHP / MySQL按速度单位排序数字

时间:2014-03-13 07:27:07

标签: php mysql

我在123.4MB/s364KB/s这样的大型MySQL数据库中有很多带速度单位的记录。

我想按降序排序,但单位非常烦人。

我已经尝试了以下但是它不起作用:

mysql_query("SELECT * FROM results ORDER BY speed DESC LIMIT 20")

我该怎么办?

提前致谢!

P.S。:编辑整个数据库不是一种选择。

3 个答案:

答案 0 :(得分:4)

尝试这样的事情:

SELECT * FROM results ORDER BY 
    CASE 
        WHEN speed LIKE '%KB/s' THEN CAST(speed AS DECIMAL(10,2))
        WHEN speed LIKE '%MB/s' THEN CAST(speed AS DECIMAL(10,2)) * 1024
    END
DESC
LIMIT 20

答案 1 :(得分:0)

如果此类查询很常见且速度没有那么多重复,请尝试创建速度索引。

答案 2 :(得分:0)

对于您的情况,您可以使用此解决方案 -

...ORDER BY IF(LOCATE('MB', speed), speed * 1024, speed * 1)