Priorités des opérateurs (Transact-SQL)Operator Precedence (Transact-SQL)

CETTE RUBRIQUE S’APPLIQUE À :ouiSQL Server (à partir de la version 2008)ouiAzure SQL DatabasenonAzure SQL Data Warehouse nonParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Lorsqu'une expression complexe comporte plusieurs opérateurs, les priorités des opérateurs déterminent l'ordre d'exécution des opérations.When a complex expression has multiple operators, operator precedence determines the sequence in which the operations are performed. Cet ordre peut affecter considérablement la valeur résultante.The order of execution can significantly affect the resulting value.

L'ordre de priorité des opérateurs est indiqué dans le tableau suivant.Operators have the precedence levels shown in the following table. Un opérateur de priorité élevée est évalué avant un opérateur de priorité basse.An operator on higher levels is evaluated before an operator on a lower level.

LevelLevel OpérateursOperators
11 ~ (NOT au niveau du bit)~ (Bitwise NOT)
22 * (Multiplication), / (Division), % (Modulo)* (Multiplication), / (Division), % (Modulus)
33 + (Positif), - (Négatif), + (Addition), + (Concaténation), - (Soustraction), & (AND au niveau du bit), ^ (OR exclusif au niveau du bit), | (OR au niveau du bit)+ (Positive), - (Negative), + (Addition), + (Concatenation), - (Subtraction), & (Bitwise AND), ^ (Bitwise Exclusive OR), | (Bitwise OR)
44 =, >, <, >=, <=, <>, !=, !>, !< (opérateurs de comparaison)=, >, <, >=, <=, <>, !=, !>, !< (Comparison operators)
55 NOTNOT
66 ANDAND
77 ALL, ANY, BETWEEN, IN, LIKE, OR, SOMEALL, ANY, BETWEEN, IN, LIKE, OR, SOME
88 = (Affectation)= (Assignment)

Lorsque deux opérateurs dans une expression ont le même niveau de priorité, ils sont évalués de gauche à droite en fonction de leur position dans l'expression.When two operators in an expression have the same operator precedence level, they are evaluated left to right based on their position in the expression. Par exemple, dans l'expression utilisée dans l'instruction SET, l'opérateur de soustraction est évalué avant l'opérateur d'addition.For example, in the expression that is used in the following SET statement, the subtraction operator is evaluated before the addition operator.

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

Utilisez des parenthèses pour modifier la priorité habituelle des opérateurs dans une expression.Use parentheses to override the defined precedence of the operators in an expression. Tout ce qui se trouve entre parenthèses est évalué en premier pour produire une seule valeur, qui est ensuite utilisée par un opérateur en dehors des parenthèses.Everything within the parentheses is evaluated first to yield a single value before that value can be used by any operator outside the parentheses.

Par exemple, dans l'expression utilisée dans l'instruction SET, l'opérateur de multiplication est prioritaire par rapport à l'opérateur d'addition.For example, in the expression used in the following SET statement, the multiplication operator has a higher precedence than the addition operator. Par conséquent, il est évalué en premier ; le résultat de l'expression est 13.Therefore, it is evaluated first; the expression result is 13.

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

Dans l'expression utilisée dans l'instruction SET suivante, les parenthèses font que l'addition est effectuée en premier.In the expression used in the following SET statement, the parentheses cause the addition to be performed first. Le résultat de l'expression est 18.The expression result is 18.

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

Si une expression comporte des parenthèses imbriquées, c'est l'expression la plus imbriquée qui est évaluée en premier.If an expression has nested parentheses, the most deeply nested expression is evaluated first. L'exemple suivant contient des parenthèses imbriquées ; l'expression 5 - 3 se trouve dans les parenthèses les plus imbriquées.The following example contains nested parentheses, with the expression 5 - 3 in the most deeply nested set of parentheses. Le résultat de cette expression est 2.This expression yields a value of 2. Ensuite, l'opérateur d'addition (+) ajoute ce résultat à 4.Then, the addition operator (+) adds this result to 4. Le résultat est alors 6.This yields a value of 6. Enfin, la valeur 6 est multipliée par 2, ce qui produit le résultat 12 pour l'expression.Finally, the 6 is multiplied by 2 to yield an expression result of 12.

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;  

Voir aussiSee Also

Opérateurs logiques (Transact-SQL) Logical Operators (Transact-SQL)
Opérateurs (Transact-SQL) Operators (Transact-SQL)
Fonctions intégrées (Transact-SQL)Built-in Functions (Transact-SQL)