Sql 正在查找数据类型映像字段的平均数据长度

Sql 正在查找数据类型映像字段的平均数据长度,sql,sql-server,Sql,Sql Server,我有一个以图像数据类型存储文档的表。我想找出表中所有文件的平均大小。我正在运行以下查询 select AVG(DATALENGTH(document)) from DOCUMENT 文档是数据类型图像的字段。我得到以下异常 Arithmetic overflow error converting expression to data type int. 请帮助我解决此错误?是否尝试手动将DATALENGTH(文档)强制转换为int AVG(CAST(DATALENGTH(document)

我有一个以图像数据类型存储文档的表。我想找出表中所有文件的平均大小。我正在运行以下查询

select AVG(DATALENGTH(document)) from DOCUMENT
文档是数据类型图像的字段。我得到以下异常

Arithmetic overflow error converting expression to data type int.

请帮助我解决此错误?

是否尝试手动将DATALENGTH(文档)强制转换为int

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

编辑:根据jpw的建议,将强制转换更改为BIGINT。

尝试
将图像数据类型转换/强制转换为Varbinary(max)
。根据
Datalength()
函数返回图像数据类型的int,其中作为varbinary(max)的bigint

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


你真的有大于最大整数(2 GB)的图像吗?因为AVG函数溢出了INT类型转换,所以它不应该有帮助,而且DATALENGTH函数仍然为图像返回INT,但是强制转换到BIGINT可能会解决这个问题,因为这会迫使平均函数使用更大的数据类型
Select Avg( Datalength( Convert(Varbinary(max), document) ) ) 
From DOCUMENT