我在123.4MB/s
和364KB/s
这样的大型MySQL数据库中有很多带速度单位的记录。
我想按降序排序,但单位非常烦人。
我已经尝试了以下但是它不起作用:
mysql_query("SELECT * FROM results ORDER BY speed DESC LIMIT 20")
我该怎么办?
提前致谢!
P.S。:编辑整个数据库不是一种选择。
答案 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)