【发布时间】:2017-12-22 16:22:40
【问题描述】:
最近我在玩 SQL Server 数据类型,并将大量数据放入表中,并试图找出 Varchar 和 Numeric 数据的性能。但是,我遇到了一些错误,我认为不应该是这样,但确实如此。我的问题如下:
我有一张桌子:
create table sa(f1 varchar(100))
我有一个向表中插入 100000 个数据的存储过程:
create proc sad
as
begin
declare @i int=0
while @i<100000
begin
insert into sa values(@i)
set @i=@i+1
end
end
exec sad
我已经测试了以下内容:
select CONVERT(int,f1) from sa //Works Fine, i tested after the Problem
select sum(convert(int,f1)) from sa //Didn't Worked, So i tested above and Below
select sum(convert(decimal(18,2),f1)) from sa //And, it again works fine
但是,当我总结将 F1 转换为 Int 时,它显示了一个错误。
但是,当我只选择 Converting to Int 时,它很好。
而且,当我总结将 F1 转换为十进制时,它工作正常。
SUM函数的数据类型是什么?
在上述数据上,它适用于 Decimal 但不适用于 Int?
为什么?
我收到以下错误
将表达式转换为数据类型 int 时出现算术溢出错误。
【问题讨论】:
-
请复制并粘贴您遇到的错误...
-
对不起,...我用我得到的错误编辑了我的问题
-
我试图找出性能问题,同时使用 Varchar 和 Numeric 数据类型
-
你的总价值会超过20亿吗?
-
如果您对
int求和,SUM 将为int,但如果您对decimal求和,SUM 将为decimal。有关更多详细信息,请参阅下面的答案...
标签: sql sql-server sql-server-2008