2009-04-17 7 views

Antwort

3

Wie die meisten Programmiersprachen sehen sind, mysql führt / und * (sowie DIV,% und MOD) von links nach rechts in der Reihenfolge auftreten sie. Zum Beispiel:

1/2 * 3/4/5 * 6 

entspricht

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

Siehe http://dev.mysql.com/doc/refman/5.0/en/operator-precedence.html für eine vollständige Liste der Operator Vorrang.

+0

Kann der Downvoter seine Argumentation erklären? – Artelius

0

/oder * hat in mysql die höchste Priorität.

Sie haben die gleiche Priorität.

1

Sie haben die gleiche Priorität, * wird zuerst aufgeführt, und MySQL wird von links nach rechts ausgewertet.

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

Mein Rat ist, Gebrauch Klammern(), um die Dinge klar zu machen.

Es ist immer am besten, um zu überprüfen, und das kann sehr leicht mit MySQL erfolgen:

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) 
2

Die Betreiber priorisiert werden als von der höchsten Priorität auf den niedrigsten aufgeführt:

  1. BINARY, COLLATE
  2. NICHT (logische Verneinung),! (Logische Negation)
  3. .- (unären minus), ~ (unären Bitinversion)
  4. ^(bitweise Exklusiv-ODER-Vergleich)
  5. . * (Multiplikation),/(Division),% (modulo)
  6. .- (Subtraktion), + (Addition)
  7. < < (bitweise Verschiebung links), >> (bitweise Verschiebung nach rechts)
  8. & (bitweise AND)
  9. | (Bitweise OR)
  10. Vergleichsoperatoren wie <>
  11. BETWEEN, NOT BETWEEN
  12. UND & & (conjuction - logische Addition)
  13. XOR (logische Exklusiv-ODER-Vergleich)
  14. OR || (Disjunktion - entweder/oder Vergleich)

Wie pro Liste der Vergleich Operator BINARY hat Vorrang vor der BETWEEN und Ampersand (&) Betreiber.Operatoren in derselben Zeile haben die gleiche Priorität und werden in der Reihenfolge der Verwendung ausgewertet.

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

+1

Ich würde das schnell löschen, ChrisAD. Ich denke, es ist falsch. – paxdiablo

+0

ja es war falsch Pax =) In MySQL wird es in der Reihenfolge der Verwendung ausgewertet, wenn sie auf dem gleichen Niveau sind. Ich habe auf Transact-SQL hier gelesen: http://msdn.microsoft.com/en-us/library/ms190276.aspx, die für MySQL nicht gleich ist =) Danke PAx –

0

Die Antwort ist: es sollte keine Rolle spielen. Wenn Sie einen Ausdruck haben, bei dem Sie nicht sicher sind, wie er ausgewertet wird, verwenden Sie parens. Sie sind frei.