我是SQL Server的新手,所以如果我的问题看起来太容易,请接受我的道歉。我试图找到一个解决方案,但到目前为止,我看不到任何我可以在查询中使用的内容。
我正在尝试查找表中最大列的长度,并且我正在使用以下查询。
SELECT
SUM(DATALENGTH([INSDetails])) as [INSDetails]
FROM
dbo.Contractors
表Contractors
略高于8GB,行数超过30mln。 INSDetails
列为varchar(2048)
上面的查询非常适合我数据库中所有其他表的所有其他列,但是当我在Contractors
表上运行它时会返回错误
Msg 8115,Level 16,State 2,Line 26
将表达式转换为数据类型int的算术溢出错误。
我了解当您尝试将某种数据类型的值转换为另一种数据类型时会出现此错误消息,但该值对于第二种数据类型而言太大。
您能否帮我改写查询或建议其他方法来获取输出?
我读过有人建议使用CAST AS big int来解决这个问题,但我不确定如何将它包含在我的查询中。
任何建议将不胜感激。提前谢谢。
答案 0 :(得分:5)
select sum(cast(len([INSDetails]) as bigint))