Freigeben über


Operatorrangfolge (Transact-SQL)

Besitzt ein komplexer Ausdruck mehrere Operatoren, bestimmt die Operatorrangfolge die Reihenfolge, in der die einzelnen Operationen durchgeführt werden. Die Ausführungsreihenfolge kann sich entscheidend auf das Ergebnis 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

Operatoren

1

~ (Bitweises NOT)

2

* (Multiplikation), / (Division), % (Modulo)

3

+ (Positiv), - (Negativ), + (Addition), (+ Verketten), - (Subtraktion), & (Bitweises AND), ^ (Bitweises exklusives OR), | (Bitweises OR)

4

=, >, <, >=, <=, <>, !=, !>, !< (Vergleichsoperatoren)

5

NOT

6

AND

7

ALL, ANY, BETWEEN, IN, LIKE, OR, SOME

8

= (Zuweisung)

Besitzen zwei Operatoren in einem Ausdruck die gleiche Ebene in der Rangfolge, werden sie von links nach rechts, ausgehend von ihrer Position innerhalb des Ausdrucks, ausgewertet. So wird in dem Ausdruck, der in der folgenden SET-Anweisung verwendet wird, der Subtraktionsoperator vor dem Additionsoperator ausgewertet.

DECLARE @MyNumber int
SET @MyNumber = 4 - 2 + 27
-- Evaluates to 2 + 27 which yields an expression result of 29.
SELECT @MyNumber

Mit Klammern kann die definierte Rangfolge von Operatoren in einem Ausdruck außer Kraft gesetzt werden. Die Operatoren innerhalb der Klammern werden zuerst ausgewertet, bevor der sich ergebende einzelne Wert von den Operatoren außerhalb der Klammern verwendet wird.

In dem Ausdruck, der in der folgenden SET-Anweisung verwendet wird, besitzt der Multiplikationsoperator Vorrang vor dem Additionsoperator. Er wird daher zuerst ausgewertet; das Ergebnis des Ausdrucks lautet 13.

DECLARE @MyNumber int
SET @MyNumber = 2 * 4 + 5
-- Evaluates to 8 + 5 which yields an expression result of 13.
SELECT @MyNumber

In dem Ausdruck, der in der folgenden SET-Anweisung verwendet wird, bewirken die Klammern, dass die Addition zuerst durchgeführt wird. Das Ergebnis des Ausdrucks lautet 18.

DECLARE @MyNumber int
SET @MyNumber = 2 * (4 + 5)
-- Evaluates to 2 * 9 which yields an expression result of 18.
SELECT @MyNumber

In einem Ausdruck mit geschachtelten Klammern wird der Ausdruck der höchsten Schachtelungstiefe zuerst ausgewertet. Das folgende Beispiel enthält geschachtelte Klammern, und der Ausdruck 5 - 3 ist der Ausdruck mit der höchsten Schachtelungstiefe. Dieser Ausdruck ergibt den Wert 2. Danach wird mit dem Additionsoperator (+) dieses Ergebnis zu 4 addiert. Dies ergibt den Wert 6. Schließlich wird 6 mit 2 multipliziert, sodass sich als Ergebnis des Ausdrucks 12 ergibt.

DECLARE @MyNumber int
SET @MyNumber = 2 * (4 + (5 - 3) )
-- Evaluates to 2 * (4 + 2) which then evaluates to 2 * 6, and 
-- yields an expression result of 12.
SELECT @MyNumber