小编CaM*_*CaM的帖子

SQL Modulo 函数给出了错误的值?

在 Javascript、Excel、Python 和科学计算器中,模运算

-34086.1576962834 % 360.0      <-- python
=MOD(-34086.1576962834, 360.0) <-- Excel function
Run Code Online (Sandbox Code Playgroud)

给出一个值113.84230371659942. (或者非常接近的东西,取决于小数位数和四舍五入。)

但在 T-SQL 中,

Select -34086.1576962834 % 360.0
Run Code Online (Sandbox Code Playgroud)

返回值-246.1576962834.

我尝试过使用

Select cast(-34086.1576962834 as numeric(30,15)) % cast(360.0 as numeric(30,15))
Run Code Online (Sandbox Code Playgroud)

我在想,这可能是浮点与固定十进制数学不匹配的一个例子,但这并不能解决问题。

为什么 SQL Server 不以与计算器/预期结果一致的方式执行此操作?更重要的是,有没有办法让 T-SQL 像我的计算器一样进行算术运算?

我主要使用 SQL Server 2019,但我已经确认 SQL Server 2012 和 2014 也给出相同的 -246... 结果。

Oracle 函数mod(x,y)和 pythonmath.fmod(x,y)给出相同的 -246.nnn 结果。

sql-server t-sql

8
推荐指数
1
解决办法
1042
查看次数

标签 统计

sql-server ×1

t-sql ×1