【发布时间】:2013-03-26 13:23:00
【问题描述】:
为什么下面两个查询的输出在 SQL Server 中不同而在 Oracle 中相同?
SELECT 20.0/-2.0/5
SELECT 20/(-2.0)/5
【问题讨论】:
-
输出是什么是,你期待什么??
-
@marc_s 我在 SQL Server 2008 中分别得到
-50.000000000和-2.00000000,但希望它们都只是-50.000000000。 -
请注意,在 MySQL 中两者都给出 -2
-
这表明了一件重要的事情:这个问题纯粹是学术性的。我会认为实际程序中的这段代码是一个错误,因为它的含义非常不清楚,因为
(20/-2.0)/5不是20/(-2.0/5)。使用括号。 -
@praveen:这取决于表达式是从左到右还是从右到左执行。 MySql 似乎从左到右执行,Oracle 从右到左执行。而在 SQL-Server 中,
2.0周围的括号似乎通过增加第一个除法的优先级来改变方向。
标签: sql sql-server oracle tsql plsql