【问题标题】:Calculate file sizes in sql在sql中计算文件大小
【发布时间】:2013-11-20 09:08:42
【问题描述】:

我在表格中的文档文件大小如下:

Filesize
7013    
14050
1300050
7775

文件大小默认以字节为单位。 我想使用 sql 将文件大小相应地转换为 KB、MB 或 GB。

已经能够使用下面的sql来计算文件大小, 但我不知道如何将它们分组为 KB、MB、GB。

SELECT
    CAST(
        ROUND(
            SUM( CAST(filesize AS Numeric(15,4)) / 1024 )
           ,2
        ) AS decimal(10,2)
    ) 
FROM Attachments

我的最终目标是:

 6.848 KBs     
 13.720 KBs
 1.240 MBs
 7.593 KBs

我使用的是1KiloByte = 1024字节的转换率

【问题讨论】:

    标签: sql sql-server-2008


    【解决方案1】:

    你可以试试这个

    DECLARE @X NUMERIC(18,4) = 23;
    SELECT CASE
    WHEN @X <= 1024                             THEN CONVERT(NVARCHAR, @X) + ' BYTES'
    WHEN @X >1024 AND @X <= 1048576             THEN CONVERT(NVARCHAR, @X/1024) + ' KB'
    WHEN @X >1048576 AND @X <= 1073741824       THEN CONVERT(NVARCHAR, @X/1048576) + ' MB'
    WHEN @X >1073741824 AND @X <= 1099511627776 THEN CONVERT(NVARCHAR, @X/1073741824) + ' GB'
    ELSE CONVERT(NVARCHAR, @X/1099511627776) + ' TB'
    END
    

    以使用您的表格和字段为例

    SELECT CASE
    WHEN yt.FileSize <= 1024                                     THEN CONVERT(NVARCHAR, yt.FileSize) + ' BYTES'
    WHEN yt.FileSize >1024 AND yt.FileSize <= 1048576            THEN CONVERT(NVARCHAR, yt.FileSize/1024) + ' KB'
    WHEN yt.FileSize >1048576 AND yt.FileSize <= 1073741824      THEN CONVERT(NVARCHAR, yt.FileSize/1048576) + ' MB'
    WHEN yt.FileSize >1073741824 AND yt.FileSize <= 109951162777 THEN CONVERT(NVARCHAR, yt.FileSize/1073741824) + ' GB'
    ELSE CONVERT(NVARCHAR, yt.FileSize/1099511627776) + ' TB'
    END
    FROM YourTable yt
    

    【讨论】:

    • 你甚至可以使用函数来调用并输出所需的输出
    • 不错,但是如何将表名和表列集成到查询中?
    • 在此选择查询中,将@X 替换为字段的名称。我将编辑我的答案
    • 非常感谢。我现在只需要处理上限和下限。
    • 当然。希望你得到你需要的东西
    猜你喜欢
    • 2011-08-17
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 2010-12-22
    • 2012-02-06
    相关资源
    最近更新 更多