如何修复count函数引发的“将表达式转换为int类型时算术溢出”错误
解决COUNT(*)算术溢出错误的方案
问题原因
SQL Server中COUNT(*)默认返回INT类型,而INT的最大值为2,147,483,647。当你的表[my_table_data]中的记录数超过这个数值时,就会触发"Arithmetic overflow error converting expression to data type int"的溢出错误。
解决方案
- 使用
COUNT_BIG(*)替代COUNT(*):COUNT_BIG(*)返回BIGINT类型,最大值可达9,223,372,036,854,775,807,完全能支持超大表的行数统计。执行语句如下:SELECT COUNT_BIG(*) FROM [my_table_data] - 显式转换结果类型(不推荐,仅作补充):
若一定要用COUNT(*),可以将结果强制转换为BIGINT,但注意这种方式在COUNT(*)本身已经溢出时仍会报错,所以优先级低于COUNT_BIG(*):SELECT CAST(COUNT(*) AS BIGINT) FROM [my_table_data]
内容的提问来源于stack exchange,提问作者Du Nguyen
相关产品推荐
相关产品推荐

