приоритет оператора в MySQL - PullRequest
2 голосов
/ 17 апреля 2009

Какой оператор: / или * будет иметь более высокий приоритет в MySQL?

Ответы [ 6 ]

3 голосов
/ 17 апреля 2009

Как и большинство языков программирования, 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 для получения полного списка приоритетов операторов.

2 голосов
/ 17 апреля 2009

Операторы располагаются по приоритетам, перечисленным от наивысшего приоритета к низшему:

  1. BINARY, COLLATE
  2. НЕ (логическое отрицание),! (логическое отрицание)
  3. .- (унарный минус), ~ (унарная инверсия битов)
  4. ^ (битовое исключающее ИЛИ сравнение)
  5. . * (Умножение), / (деление),% (по модулю)
  6. .- (вычитание), + (сложение)
  7. << (битовое смещение влево), >> (битовое смещение вправо)
  8. & (побитовое И)
  9. | (побитовое ИЛИ)
  10. Операторы сравнения, такие как <>
  11. МЕЖДУ, НЕ МЕЖДУ
  12. AND && (соединение - логическое сложение)
  13. XOR (логическое исключающее ИЛИ сравнение)
  14. ИЛИ || (дизъюнкция - или / или сравнение)

Согласно списку, оператор BINARY сравнения имеет приоритет над операторами BETWEEN и ampersand (&). Операторы в той же строке выше имеют одинаковый уровень приоритета и оцениваются в порядке использования.

Источник http://www.learn -mysql-tutorial.com / Expressions.cfm

1 голос
/ 17 апреля 2009

Они имеют одинаковый приоритет, * указан первым, и 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)
1 голос
/ 17 апреля 2009
0 голосов
/ 18 апреля 2009

Ответ: это не должно иметь значения. Если у вас есть выражение, которое вы не знаете, как оно оценивается, используйте скобки. Они бесплатны.

0 голосов
/ 17 апреля 2009

/ или * будет иметь самый высокий приоритет в MySQL.

Они имеют одинаковый приоритет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...