在 SQL Server 2008 中将 varchar 转换为数值数据类型时发生算术溢出错误

本文关键字:数据类型 错误 溢出 2008 Server SQL 中将 varchar 转换 | 更新日期: 2023-09-27 18:33:13

我在SQL Server 2008中有一个表:

Create table ExTable1 
(
     Fcur varchar(50),
     Tcur varchar(50),
     Rt numeric(10,10)
)

我正在尝试插入数据

Insert into [DB].[dbo].[ExTable1 ](Fcur, Tcur, Rt) 
values ('INR', 'EUR', 1) 

我得到的错误是

将 varchar 转换为数值数据类型时发生算术溢出错误。

当我将列Rt的数据类型更改为numeric(10,2)时,上面提到的查询非常好。

我要插入Rt列中的数据可能在小数点后有 10 位数字。

如何解决这个问题?

基本上我在 C# 代码中得到了这个异常。所以我尝试直接在SQL服务器中执行用C#创建的查询字符串。我遇到了同样的错误。

谢谢

在 SQL Server 2008 中将 varchar 转换为数值数据类型时发生算术溢出错误

Numeric(10,10( 将定义一个仅由小数组成的数字...

尝试使用Numeric(11,10)(逗号前一位,逗号后 10 位(。

第一个参数定义全

宽,第二个参数定义全宽逗号后面的位置数,请阅读此处。

十进制[ (p[ , s] (] 和 numeric[ (p[ , s] (]固定精度和小数位数。使用最大精度时,有效值为 - 10^38 +1 到 10^38 - 1。十进制的 ISO 同义词是 dec 和 dec(p, s(。数字在功能上等效于十进制。

P(精度(将存储在小数点左侧和右侧的最大十进制数字总数。精度必须是介于 1 到最大精度 38 之间的值。默认精度为 18。

s(刻度(将存储在小数点右侧的小数位数。从 p 中减去此数字以确定小数点左侧的最大位数。可以存储在小数点右侧的最大十进制位数。小数位数必须是介于 0 到 p 之间的值。仅当指定了精度时,才能指定小数位数。默认比例为 0;因此,0 <= s <= p。最大存储大小因精度而异。

相关文章: