正如Juergen所说,它们具有相同的优先权,而且它具有integer division:
80/9 = 8 (as the remainder/decimal part is removed)
如果整数被除数除以整数除数,则结果是一个整数,其截断结果的任何小数部分。
然后:
8 * 9 = 72
80 / 9
收益8
。由于两个操作数都是整数,因此结果也是如此。 /
和*
具有相同的优先级,因此表达式从左到右进行评估:
80 / 9 * 9
-> 8 * 9
-> 72
数学运算符在SQL中具有与在数学中相同的优先级。
由于隐式转换,您的查询结果为72:
80 / 9
将得到8,因为左值是一个整数,所以尽管你期望得到double的结果,优化器会隐式地将值转换为整数。
您可以使用左侧双精度值“覆盖”隐式强制转换:
80.0 / 9
由于*
和/
有the same precedence(2),它从左到右逐个处理。
当表达式中的两个运算符具有相同的运算符优先级时,它们将根据它们在表达式中的位置从左到右进行计算。这里*和/具有相同的优先级。