【问题标题】:Different results from similar T-SQL queries来自类似 T-SQL 查询的不同结果
【发布时间】:2020-02-07 08:01:57
【问题描述】:

两个 t-SQL (MS SQL 2017) 查询:

Select 125. /  -124/ 125.
Select 125. / (-124)/125.

差异仅在括号上。

但是,结果并不相等:

-126.0080645161
-0.0080645120

为什么结果不一样?

【问题讨论】:

标签: sql-server tsql


【解决方案1】:

第二种情况下括号的加入改变了运算的顺序。为避免任何歧义,您应该明确指定括号。对于第一个结果,您应该使用:

SELECT 125. / (-124 / 125.)

对于第二种情况:

SELECT (125. / -124) / 125.

【讨论】:

  • 阿门。了解优先规则。编写清晰易懂的代码。即使不需要,括号中的意图也很明确。
【解决方案2】:

解释是,在 T-SQL 中,* (Multiplication)/ (Division) 运算符的 precedence 高于 - (Negative) 运算符。那么具体评估的是:

表达式1:125. / - (124 / 125),等于:-126.0080645161

表达式2:125. / (-124) / 125,等于:-0.0080645120

注意,正确的结果是:-0.0080645120

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多