将字节转换为千字节/兆字节

Phi*_*lip 0 sql t-sql sql-server

我有一个附件表,以字节为单位存储文档的大小。

我需要以 KB 或 MB 显示所有文档的结果集。如果文档小于 1MB,则以 KB 为单位;如果文档大于 1MB,则以 MB 为单位。

目前我的查询中有这个,但我正在努力使显示在舍入方面正确格式化。

    CASE WHEN D.DocumentSize < 1000000 THEN
        CONCAT(D.DocumentSize / 1024, 'KB')
    ELSE
        CONCAT(D.DocumentSize / 1048576, 'MB')
    END AS DocumentSizeText,
Run Code Online (Sandbox Code Playgroud)

以下是一些示例值:

87336
1458250
346
8434
8434
Run Code Online (Sandbox Code Playgroud)

346 字节也将显示 0KB,因此理想情况下显示 1KB 将是理想的最小值。

ydo*_*oow 8

使用FORMAT,如果你想在MB十进制值的规定显著数量。N3这里用于显示 3 个十进制数字。

(CASE WHEN D.DocumentSize < 1000000 THEN
           CONCAT(CEILING(D.DocumentSize / 1024.0), 'KB')
      ELSE 
           CONCAT(FORMAT(D.DocumentSize / 1048576.0, 'N3'), 'MB')
 END) AS DocumentSizeText
Run Code Online (Sandbox Code Playgroud)