Freigeben über


Operatorrangfolge (Transact-SQL)

Besitzt ein komplexer Ausdruck mehrere Operatoren, bestimmt die Operatorenrangfolge die Reihenfolge, in der die einzelnen Operationen durchgeführt werden. Die Ausführungsreihenfolge kann sich entscheidend auf das Ergebnis auswirken.

Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version), Windows Azure SQL-Datenbank (Ursprüngliche Version bis aktuelle Version).

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 überschrieben 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;

Siehe auch

Verweis

Logische Operatoren (Transact-SQL)

Operatoren (Transact-SQL)

Integrierte Funktionen (Transact-SQL)