Operatorrangfolge (Entity SQL)
Wenn in einer Entity SQL-Abfrage mehrere Operatoren vorkommen, bestimmt die Operatorrangfolge die Reihenfolge, in der die einzelnen Operationen durchgeführt werden. Die Ausführungsreihenfolge kann sich entscheidend auf das Abfrageergebnis auswirken.
Operatoren besitzen die in der folgenden Tabelle dargestellte Rangfolge. Ein Operator, der höher in der Rangfolge steht, wird vor einem Operator niedrigeren Ranges ausgewertet.
Ebene | Vorgangsart | Betreiber |
---|---|---|
1 | Primär | . , [] () |
2 | Unär | ! not |
3 | Multiplikativ | * / % |
4 | Additiv | + - |
5 | Sortieren | < > <= >= |
6 | Gleichheit | = != <> |
7 | Bedingtes AND | and && |
8 | Bedingtes OR | or || |
Verfügen zwei Operatoren in einem Ausdruck über die gleiche Rangstufe, werden sie von links nach rechts, ausgehend von ihrer Position innerhalb der Abfrage, ausgewertet. x+y-z
wird beispielsweise als (x+y)-z
ausgewertet.
Mit Klammern kann die definierte Rangfolge von Operatoren in einer Abfrage außer Kraft gesetzt werden. Die Operatoren innerhalb der Klammern werden zuerst ausgewertet, bevor das sich ergebende einzelne Ergebnis von den Operatoren außerhalb der Klammern verwendet werden kann. In x+y*z
wird beispielsweise y
mit z
multipliziert und dann zu x
addiert, aber in (x+y)*z
werden x
und y
addiert, und dann wird das Ergebnis mit z
multipliziert.