gpt4 book ai didi

sql-server - 将表达式转换为数据类型数值时出现算术溢出错误

转载 作者:行者123 更新时间:2023-12-02 04:10:45 25 4
gpt4 key购买 nike

SELECT ROUND(99.12,-1); 

Msg 8115, Level 16, State 2, Line 1 Arithmetic overflow error converting expression to data type numeric.

当表达式范围为:

时,会出现此错误
  1. 95.00 至 99.99
  2. 5.00 至 9.99
  3. 995.00 到 999.99 等等除了该范围之外,它按预期工作。

但是当您在 Oracle DB 中执行相同的查询时,它工作正常并给出预期的输出。

SELECT ROUND(99.12,-1) FROM DUAL;
ans: 100

有人可以解释一下,为什么它在 sqlserver2008 中的行为如此

提前致谢

最佳答案

当您执行SELECT ROUND(99.12,-1)时,第一个参数隐式为NUMERIC(4,2),并且不允许超过2位数字小数点前。

95.00 到 99.99 失败的原因是它们被四舍五入为 100,无法放入 NUMERIC(4,2) 中。类似的逻辑适用于您的其他边缘情况。

阅读this MSDN article进行令人大开眼界的讨论。

关于sql-server - 将表达式转换为数据类型数值时出现算术溢出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36862655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com