我有一个将文档存储为图像数据类型的表。我希望找到表中所有文件的平均大小。我正在运行以下查询
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。
尝试Convert/Cast Image datatype to Varbinary(max)
.根据MSDN的说法,Datalength()
函数返回图像数据类型的int,其中varbinary(max)返回bigint。
Select Avg( Datalength( Convert(Varbinary(max), document) ) )
From DOCUMENT
请阅读 MSDN 的以下说明
ntext、文本和图像数据类型将在将来的版本中删除 的Microsoft SQL Server。避免在新的 开发工作,并计划修改当前使用的应用程序 他们。请改用 nvarchar(max)、varchar(max) 和 varbinary(max)。 固定和可变长度数据类型,用于存储大型非 Unicode 和 Unicode 字符和二进制数据。Unicode 数据使用 UNICODE UCS-2 字符集。