MySQL 将字节转换为千字节、兆字节、千兆字节

标签 mysql byte filesize megabyte

我有一个日志表,以字节为单位存储各种文件大小。我希望能够查询数据库并返回已转换为 MB GB 等的最小可能 float 。目前我可以返回 MB 中的值,但如何继续进一步除以最小值并附加单位?

SELECT CONCAT( ROUND( SUM( data_transferred ) /1048576, 2 ) ,  ' MB' ) 
FROM  `logs`

如有任何帮助,我们将不胜感激。

更新:

基于 voodoo417 提供的链接,我将查询更新为以下内容,它将最相关的文件大小输出到小数点后两位并附加单位(1000 字节、1 KB、500 MB、2 GB 等):

SET @bytes := (SELECT SUM(data_transferred) FROM wp_ddownload_statistics);

SELECT
    CASE
WHEN ABS(@bytes) < 1024 THEN CONCAT( ROUND( @bytes, 2 ), ' Bytes')
      WHEN ABS(@bytes) < 1048576 THEN CONCAT( ROUND( (@bytes/1024), 2 ), ' KB')
      WHEN ABS(@bytes) < 1073741824 THEN CONCAT( ROUND( (@bytes/1048576), 2 ), ' MB')
      WHEN ABS(@bytes) < 1099511627776 THEN CONCAT( ROUND( (@bytes/1073741824), 2 ), ' GB' )
      WHEN ABS(@bytes) < 1125899906842624 THEN CONCAT( ROUND( (@bytes/1099511627776), 2 ), ' TB')
      WHEN ABS(@bytes) < 1152921504606846976 THEN CONCAT( ROUND( (@bytes/1125899906842624), 2 ), ' PB' )
      WHEN ABS(@bytes) < 1180591620717411303424 THEN CONCAT( ROUND( (@bytes/1152921504606846976) ,2), ' EB' )
      WHEN ABS(@bytes) < 1208925819614629174706176 THEN CONCAT( ROUND( (@bytes/1180591620717411303424), 2), ' ZB' )
      WHEN ABS(@bytes) < 1237940039285380274899124224 THEN CONCAT( ROUND( (@bytes/1208925819614629174706176), 2), ' YB' )
      WHEN ABS(@bytes) < 1267650600228229401496703205376 THEN CONCAT( ROUND( (@bytes/1237940039285380274899124224), 2), ' BB' )
    END

最佳答案

我知道这是一个老问题,但我最近在寻找同样的东西,发现 MySQL 5.7 添加了 format_bytes功能正是为了这个目的:

mysql> SELECT format_bytes(512), format_bytes(18446644073709551615);
+-------------------+------------------------------------+
| format_bytes(512) | format_bytes(18446644073709551615) |
+-------------------+------------------------------------+
| 512 bytes         | 16383.91 PiB                       |
+-------------------+------------------------------------+

关于MySQL 将字节转换为千字节、兆字节、千兆字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21057360/

相关文章:

MYSQL - 显示总工作时间的总和,但只显示最后更新日期时间的结果

PHP OOP 查询返回空白或数组

.net - 将 png 缩小到比原来大的大小

javascript - 在 javascript 中查找图像的大小而不使用文件属性,因为 Eclipse 不支持它

java - 从android程序写入本地主机phpmyadmin

Python - 将两字节字符串作为单字节十六进制字符写入二进制文件

C++ 帮助将字符串转换为 uint8_t

Java 压缩文件/字节数组问题

绝对路径的 PHP 文件大小

php - 使用PEAR PHP难以显示自定义错误消息