【发布时间】: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
两个 t-SQL (MS SQL 2017) 查询:
Select 125. / -124/ 125.
Select 125. / (-124)/125.
差异仅在括号上。
但是,结果并不相等:
-126.0080645161
-0.0080645120
为什么结果不一样?
【问题讨论】:
标签: sql-server tsql
第二种情况下括号的加入改变了运算的顺序。为避免任何歧义,您应该明确指定括号。对于第一个结果,您应该使用:
SELECT 125. / (-124 / 125.)
对于第二种情况:
SELECT (125. / -124) / 125.
【讨论】:
解释是,在 T-SQL 中,* (Multiplication) 和 / (Division) 运算符的 precedence 高于 - (Negative) 运算符。那么具体评估的是:
表达式1:125. / - (124 / 125),等于:-126.0080645161
表达式2:125. / (-124) / 125,等于:-0.0080645120
注意,正确的结果是:-0.0080645120。
【讨论】: