0

I have a table which stores DOCUMENTS as image datatype. I wish to find the average size of all the documents in the table. I am running the following query

select AVG(DATALENGTH(document)) from DOCUMENT

document is the field of datatype image. I am getting the following exception

Arithmetic overflow error converting expression to data type int.

Please help me resolve this error?

4

2 回答 2

0

您是否尝试过手动将 DATALENGTH(document) 转换为 int ?

AVG(CAST(DATALENGTH(document) as BIGINT))

编辑:由于 jpw 的建议,将强制转换为 BIGINT。

于 2013-09-19T11:02:23.507 回答
0

尝试Convert/Cast Image datatype to Varbinary(max)。根据MSDNDatalength()函数为图像数据类型返回 int,而对于 varbinary(max),函数返回 bigint。

Select Avg( Datalength( Convert(Varbinary(max), document) ) ) 
From DOCUMENT

请阅读 MSDN 中的以下说明

ntext 、 text 和 image 数据类型将在 Microsoft SQL Server 的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。请改用 nvarchar(max)、varchar(max) 和 varbinary(max)。用于存储大型非 Unicode 和 Unicode 字符和二进制数据的固定和可变长度数据类型。Unicode 数据使用 UNICODE UCS-2 字符集。

于 2013-09-19T11:22:53.303 回答