mysql中的运算符优先级

时间:2009-04-17 10:35:23

标签: sql mysql

哪个运算符:/*MySQL中具有更高的优先级?

6 个答案:

答案 0 :(得分:3)

与大多数编程语言一样,mysql按照它们出现的顺序从左到右执行/*(以及DIV,%和MOD)。例如:

1 / 2 * 3 / 4 / 5 * 6

相当于

((((1 / 2) * 3) / 4) / 5) * 6

请参阅http://dev.mysql.com/doc/refman/5.0/en/operator-precedence.html以获取运营商优先顺序的完整列表。

答案 1 :(得分:2)

从最高优先级到最低优先级列出了运算符的优先级:

  1. BINARY,COLLATE
  2. NOT(逻辑否定),! (逻辑否定)
  3. .-(一元减号),〜(一元位反转)
  4. ^(按位异或比较)
  5. 。*(乘法),/(除法),%(modulo)
  6. .-(减法),+(加法)
  7. << (按位向左移位),>> (按位向右移动)
  8. &安培; (按位AND)
  9. | (按位OR)
  10. 比较运算符,例如< >
  11. BETWEEN,not BETWEEN
  12. AND&& (结合 - 逻辑加法)
  13. XOR(逻辑异或比较)
  14. OR || (分离 - 或/或比较)
  15. 根据列表,比较BINARY运算符优先于BETWEEN和&符号(&)运算符。上面同一行的运算符具有相同的优先级,并按使用顺序进行评估。

    来源http://www.learn-mysql-tutorial.com/Expressions.cfm

答案 2 :(得分:1)

答案 3 :(得分:1)

它们具有相同的优先级,*首先列出,MySQL将从左到右进行评估。

http://dev.mysql.com/doc/refman/5.0/en/operator-precedence.html

我的建议是使用方括号()来清楚说明。

最好检查一下,使用MySQL可以很容易地完成:

mysql> SELECT 2*3/2, 2/3*2, 2*(3/2) ;
+--------+--------+---------+
| 2*3/2  | 2/3*2  | 2*(3/2) |
+--------+--------+---------+
| 3.0000 | 1.3333 |  3.0000 | 
+--------+--------+---------+
1 row in set (0.00 sec)

答案 4 :(得分:0)

  

/或*将在mysql中具有最高优先级。

他们的优先权相同。

答案 5 :(得分:0)

答案是:应该没关系。如果您有一个表达式,您不确定它是如何评估的,请使用parens。他们是免费的。