1
您是否可以在SQL Server 2014 Express中解释此错误?SQL Server 2014错误:将表达式转换为数据类型int的算术溢出错误
SELECT FLOOR(21474837 * 100) -- doesn't work
SELECT FLOOR(214748370 * 10) -- doesn't work
SELECT FLOOR(2147483700) -- works
SELECT FLOOR(21474837/0.01) -- works
数量21474837
被选中,是因为人数上处于劣势没有问题,既不
是不是根本问题是如何处理乘法和类型推断? 即使你没有调用'Floor',它也不会有同样的错误吗? –
是的,如果您没有调用floor并且未使用多个或分子/分母上的小数进行隐式转换,那么会发生这种情况。但问题是关于楼层,所以我在楼上指定了我的答案。我在底部添加了一个关于此的金块 – scsimon
我想我的观点是,解释为什么有一个错误没有被这个答案明确描述。错误的原因与类型推断和乘法行为有关。将int乘以int将导致服务器采用int结果。对于int而言太大的常量值将导致服务器为表示使用不同的数据类型。除以十进制将导致十进制结果。 “FLOOR”的行为或多或少是无关紧要的。解决方案是正确的,但不是解释。 –