13

我在 SQL 服务器中复制 mod 函数时遇到问题。

在 excel 中,mod (-3, 7) = 4。但在 SQL 中,-3 % 7 = -3

我是在使用 % 错误,还是 SQL 做的 mod 不同?

4

2 回答 2

26

对于 x 的正值和负值,这将给出介于 0 和 n - 1 之间的结果:

((x % n) + n) % n
于 2012-05-06T17:55:41.133 回答
2

好吧,模运算是在整数的等价类上完成的,因此 Excel 和任何 RDBMS 都没有“%做错”。但是,如果您想要一个介于 0 和 6 之间的代表,您总是可以这样做

select (-3 % 7) + 7;
于 2012-05-06T17:52:27.017 回答