English 中文(简体)
SQL Server 2005 中 VARBINARY 字段的大小
原标题:
  • 时间:2009-02-03 16:15:21
  •  标签:

我正在尝试使用SQL Server 2005中的SQL确定VARBINARY(MAX)字段内容的字节大小。由于我怀疑没有本地支持,因此是否可以使用CLR集成进行操作?任何想法都将不胜感激。

最佳回答

实际上,您可以在T-SQL中完成这个任务!

DATALENGTH(<fieldname>) 将适用于 varbinary(max) 字段。

问题回答

VARBINARY(MAX)字段可分配不超过接近2GB大小的可变长度数据。

你可以使用DATALENGTH()函数来确定列内容的长度。

例如:

SELECT DATALENGTH(CompanyName), CompanyName
FROM Customers
CREATE FUNCTION [dbo].[FileDataSizeUnit_FN] (@FileData VARBINARY(MAX))
RETURNS VARCHAR(3)
AS
    BEGIN 
        DECLARE @Unit VARCHAR(3),
            @ByteLen AS NUMERIC(16,2)

        SET @ByteLen = ISNULL(DATALENGTH(@FileData),0)

        SET @Unit = CASE WHEN @ByteLen < 1000 THEN  B 
        WHEN @ByteLen < 100000 THEN  KB 
        WHEN @ByteLen < 1000000000 THEN  MB 
        ELSE  GB  END
    
        RETURN  @Unit
    END
GO

CREATE FUNCTION [dbo].[FileDataSize_FN] (@FileData VARBINARY(MAX))
RETURNS NUMERIC(16,2)
AS
    BEGIN 
        DECLARE @Size AS NUMERIC(16,2),
            @ByteLen AS NUMERIC(16,2)

        SET @ByteLen = ISNULL(DATALENGTH(@FileData),0)

        SET @Size = CASE WHEN @ByteLen <1000 THEN @ByteLen
        WHEN @ByteLen < 100000 THEN @ByteLen/1024.0 
        WHEN @ByteLen < 1000000000 THEN @ByteLen/1024.0/1024 
        ELSE CAST(@ByteLen/1024.0/1024/1024 AS NUMERIC(16,2)) END
    
        RETURN  @Size
    END
GO

SELECT dbo.FileDataSize_FN(F.FileData) AS Size,
        dbo.FileDataSizeUnit_FN(F.FileData) AS SizeUnit
    FROM dbo.Files_Tbl F




相关问题
热门标签