【发布时间】:2018-09-19 13:27:26
【问题描述】:
我正在尝试在 SQL (SQL Server 2016) 中复制 Java int 上溢/下溢逻辑。逻辑是什么:
(a * b) + c
其中 a、b 和 c 的范围可以从 -2147483648 到 2147483648(SQL 中 int 的范围)
例如,在java中如果计算(135 * 12) + 2147483647,结果是-2147482029。在 SQL 中,对于 int,它会因溢出而出错。我需要在 SQL 中复制 java 上溢/下溢逻辑,所以它的工作原理相同并产生一个 int。
【问题讨论】:
-
看看stackoverflow.com/questions/52405042/…。有什么区别吗?
-
Reproduce behavior MAX_VALUE and MIN_VALUE 请注意确定接受的答案是否有用,因为我怀疑 SQL 是否具有相同的按位运算。
-
Guava 的
IntMath类提供了类似checkedAdd的方法,如果发生溢出则会抛出异常。 -
为什么要将代码从 Java 移植到 SQL Server?他们通常不被认为是相似的。如果这是来自例如Oracle“Java 存储过程”,那么您可能需要考虑使用 CLR 过程,其中 C# 在这方面与 Java 具有相似的行为(尽管如果这是您的 整个 Java 部分,则不应使用 CLR '正在移植)
标签: sql sql-server math