Operatorrangfolge (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Besitzt ein komplexer Ausdruck mehrere Operatoren, bestimmt die Operatorenrangfolge die Reihenfolge der Vorgänge. 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. In der folgenden Tabelle entspricht 1 dem höchsten Rang, und 8 entspricht dem niedrigsten Rang.

Ebene Operatoren
1 ~ (Bitweises NOT)
2 * (Multiplikation) / (Division), % (Modulo)
3 + (Positiv), - (Negativ), + (Addition), + (Verkettung), - (Subtraktion), & (Bitweise UND), ^ (Bitweise exklusiv ODER), | (Bitweise ODER)
4 =, >, <, >=, <=, <>, !=, !>, !< (Vergleichsoperatoren)
5 NICHT
6 AND
7 ALL, ANY, BETWEEN, IN, LIKE, OR, SOME
8 = (Zuweisung)

Wenn zwei Operatoren die gleiche Position in der Rangfolge belegen, werden sie anhand ihrer Position im Ausdruck von links nach rechts 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. Der Inhalt der Klammern wird in einen einzelnen Wert ausgewertet. Dieser Wert kann von jedem Operator außerhalb dieser Klammern verwendet werden.

In dem Ausdruck, der in der folgenden SET-Anweisung verwendet wird, besitzt der Multiplikationsoperator Vorrang vor dem Additionsoperator. Der Multiplikationsvorgang wird 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 ausgewertet 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, was den Wert 6 ergibt. 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;  

Weitere Informationen

Logische Operatoren (Transact-SQL)
Operatoren (Transact-SQL)
Integrierte Funktionen (Transact-SQL)