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

S’applique à : SQL ServerAzure SQL Database Azure SQL Managed Instance

Quand une expression complexe comporte plusieurs opérateurs, la priorité des opérateurs détermine l’ordre des opérations. Cet ordre peut affecter considérablement la valeur résultante.

L'ordre de priorité des opérateurs est indiqué dans le tableau suivant. Un opérateur de priorité élevée est évalué avant un opérateur de priorité basse. Dans le tableau suivant, 1 est le niveau le plus élevé et 8 est le niveau le plus bas.

Level Opérateurs
1 ~ (NOT au niveau du bit)
2 * (Multiplication), / (Division), % (Modulo)
3 + (Positif), - (Négatif), + (Addition), + (Concaténation), - (Soustraction), & (Bitwise AND), ^ (Bitwise Exclusive OR), | (OR au niveau du bit)
4 =, >, <, >=, <=, <>, !=, !>, !< (Opérateurs de comparaison)
5 NOT
6 AND
7 ALL, ANY, BETWEEN, IN, LIKE, OR, SOME
8 = (Affectation)

Quand 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. Par exemple, dans l'expression utilisée dans l'instruction SET, l'opérateur de soustraction est évalué avant l'opérateur d'addition.

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. Tout ce qui se trouve entre parenthèses est évalué pour produire une seule valeur. Cette valeur peut être utilisée par un opérateur en dehors des parenthèses.

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. L’opération de multiplication est évaluée en premier ; le résultat de l’expression est 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 évaluée en premier. Le résultat de l'expression est 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. L'exemple suivant contient des parenthèses imbriquées ; l'expression 5 - 3 se trouve dans les parenthèses les plus imbriquées. Le résultat de cette expression est 2. Ensuite, l’opérateur d’addition (+) ajoute ce résultat à 4, ce qui produit la valeur 6. Enfin, la valeur 6 est multipliée par 2, ce qui produit le résultat 12 pour l'expression.

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 aussi

Opérateurs logiques (Transact-SQL)
Opérateurs (Transact-SQL)
Fonctions intégrées (Transact-SQL)