SQL Server 中的 Int 到数值转换错误

Posted

技术标签:

【中文标题】SQL Server 中的 Int 到数值转换错误【英文标题】:Int to numeric conversion error in SQL Server 【发布时间】:2013-05-17 06:47:04 【问题描述】:

我对转换数据有疑问。我有一个在 VBA 中进行的选择查询,如何将 varchar 值列转换为 nvarchar

我得到这个错误:

将数字转换为数据类型数字的算术溢出错误

这是我的代码:

Dim strSQL As String
 Dim rst As New ADODB.Recordset

 strSQL = " INSERT INTO dbo.Soferi_test (test1)" & _
       " SELECT mysql.dbo.sofieri.certificat_cipti " & _
       " FROM  MySQL.dbo.sofieri " & _
       " WHERE IDNO = " & Forms!Forma_redactare_soferi!IDNO.Value

 Call AttServ(strSQL, rst) 

【问题讨论】:

【参考方案1】:

您的 int 值对于数值精度和比例定义来说太大了

在这里,我猜错误来自 WHERE 子句。不是插入

DECLARE @foo int = 99999;
DECLARE @n1 numeric(9,1), @n2 numeric (3,2);

-- 9,1 is 9 total digits, 1 decimal place
-- 3,2 is 2 total digits, 2 decimal places

-- 99999 requires at least 5 total digits

PRINT 'Wide enough'
SET @n1 = @foo;


PRINT 'Error'
SET @n2 = @foo;

评论后还是一样

DECLARE @foo numeric(5,0) = 99999;
DECLARE @n1 numeric(9,1), @n2 numeric (3,2);

PRINT 'Wide enough'
SET @n1 = @foo;


PRINT 'Error'
SET @n2 = @foo;

【讨论】:

抱歉,在我的错误不是 INT 中,我把它的数字误认为数据类型 numeric @Sergio:同样适用。 如何在 vba 中更新此语句?我是 Vba 和 sql 中的新人 您必须确保 WHERE 子句中的数据类型在 VBA 和 SQL 之间匹配

以上是关于SQL Server 中的 Int 到数值转换错误的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 里的int型取值范围是多少??

怎么将sql server 语句中integer类型转换成string

为啥 SQL Server 在将 int 转换为数据类型 numeric 时抛出算术溢出错误?

将 nvarchar 值转换为数据类型 int 和其他 SQL Server 错误时失败

sql server 触发器 从一个表添加到另个表是否两个表对应的字段必须相同呢

SQL SERVER中强制类型转换cast和convert的区别