将数值转换为数据类型数值时出现算术溢出错误

发布于 2024-11-07 03:15:33 字数 226 浏览 0 评论 0原文

我已在 2 个不同的数据库上执行此查询:

更新 table1 集 PresencePayFactor = cast(30 asdecimal (4,2))/ 30

它适用于其中一个,但不适用于另一个。 2个数据库是sql server 2008 R2,

它给出以下错误 “将数字转换为数字数据类型时出现算术溢出错误。”

可能是什么问题?

I have executed this query on 2 different databases:

Update table1 set
PresencePayFactor = cast(30 as decimal (4,2))/ 30

it is working on one but not on the other.
the 2 databases are sql server 2008 R2

it is giving the following error
"Arithmetic overflow error converting numeric to data type numeric."

What may be the problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

幼儿园老大 2024-11-14 03:15:33

两者之间的 NUMERIC_ROUNDABORT 设置是否不同?

SET NUMERIC_ROUNDABORT OFF
GO
Declare @TestTable Table ( PresencePayFactor decimal(4,2) null )
Insert @TestTable( PresencePayFactor )
Select Cast( 30 As decimal(4,2) ) / 30
GO
-- No error

SET NUMERIC_ROUNDABORT ON
GO
Declare @TestTable Table ( PresencePayFactor decimal(4,2) null )
Insert @TestTable( PresencePayFactor )
Select Cast( 30 As decimal(4,2) ) / 30
-- Arithmetic overflow error converting numeric to data type numeric.

设置 NUMERIC_ROUNDABORT (Transact-SQL)

Is NUMERIC_ROUNDABORT set differently between the two?

SET NUMERIC_ROUNDABORT OFF
GO
Declare @TestTable Table ( PresencePayFactor decimal(4,2) null )
Insert @TestTable( PresencePayFactor )
Select Cast( 30 As decimal(4,2) ) / 30
GO
-- No error

SET NUMERIC_ROUNDABORT ON
GO
Declare @TestTable Table ( PresencePayFactor decimal(4,2) null )
Insert @TestTable( PresencePayFactor )
Select Cast( 30 As decimal(4,2) ) / 30
-- Arithmetic overflow error converting numeric to data type numeric.

SET NUMERIC_ROUNDABORT (Transact-SQL)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文