gpt4 book ai didi

mysql - 如何对具有字节 KB MB GB 数据的 mysql 列进行排序?

转载 作者:行者123 更新时间:2023-11-29 02:06:43 62 4
gpt4 key购买 nike

我有一个包含“大小”列的表格,其中的文件大小以差异单位表示,例如“10 Kb”、“50 MB”、“1 GB”。问题是当我尝试排序时,它首先返回 1 GB 的行。

如何在不改变旧数据的情况下解决这个问题???

非常感谢任何帮助...谢谢。

最佳答案

您真的应该将所有数据转换为通用单位(比如字节),或者添加一个包含“度量单位”的列,并保持大小列本身为数字。

话虽如此,以下内容应该适用于以 GB/MB/KB 或 B 结尾的数据。

select size
from t
order
by case when size like '%GB' then power(1024, 3) * substr(size, 1, length(size) - 2)
when size like '%MB' then power(1024, 2) * substr(size, 1, length(size) - 2)
when size like '%KB' then power(1024, 1) * substr(size, 1, length(size) - 2)
when size like '%B' then substr(size, 1, length(size) - 1)
end desc;


+-------+------------+
| size | bytes |
+-------+------------+
| 1GB | 1073741824 |
| 10MB | 10485760 |
| 100KB | 102400 |
| 1000B | 1000 |
+-------+------------+

关于mysql - 如何对具有字节 KB MB GB 数据的 mysql 列进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4605627/

62 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com