programing

SQL Server 2005의 VARBINARY 필드 크기

javamemo 2023. 6. 29. 19:41
반응형

SQL Server 2005의 VARBINARY 필드 크기

다음에서 내용의 크기(바이트)를 결정하려고 합니다.VARBINARY(MAX)SQL Server 2005 필드(SQL 사용)입니다.이에 대한 네이티브 지원이 없는 것 같은데 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

언급URL : https://stackoverflow.com/questions/507785/size-of-varbinary-field-in-sql-server-2005

반응형