PHP/MySQL使用速度单位对数字进行排序
我在一个大型MySQL数据库中有很多速度单位的记录,比如PHP/MySQL使用速度单位对数字进行排序,php,mysql,Php,Mysql,我在一个大型MySQL数据库中有很多速度单位的记录,比如123.4MB/s和364KB/s 我想把它们按降序排列,但是单位很烦人 我已经尝试了以下方法,但无效: mysql_query("SELECT * FROM results ORDER BY speed DESC LIMIT 20") 我该怎么办 提前谢谢 注意:编辑整个数据库不是一个选项。如果这样的查询很常见,并且速度上没有太多重复,请尝试在速度上创建索引。如果这样的查询很常见,并且速度上没有太多重复,请尝试在速度上创建索引。尝试以下
123.4MB/s
和364KB/s
我想把它们按降序排列,但是单位很烦人
我已经尝试了以下方法,但无效:
mysql_query("SELECT * FROM results ORDER BY speed DESC LIMIT 20")
我该怎么办
提前谢谢
注意:编辑整个数据库不是一个选项。如果这样的查询很常见,并且速度上没有太多重复,请尝试在速度上创建索引。如果这样的查询很常见,并且速度上没有太多重复,请尝试在速度上创建索引。尝试以下操作:
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
试着这样做:
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
对于您的情况,您可以使用此解决方案-
...ORDER BY IF(LOCATE('MB', speed), speed * 1024, speed * 1)
对于您的情况,您可以使用此解决方案-
...ORDER BY IF(LOCATE('MB', speed), speed * 1024, speed * 1)