Partager via


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

Lorsqu'une expression complexe comporte plusieurs opérateurs, les priorités des opérateurs déterminent l'ordre d'exécution des opérations. Cet ordre peut affecter considérablement la valeur résultante.

S'applique à : SQL Server (SQL Server 2008 via la version actuelle, Base de données SQL Windows Azure (version initiale via la version actuelle.

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.

Level

Opérateurs

1

~ (NOT au niveau du bit)

2

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

3

+ (Positif), - (Négatif), + (Addition), (+ Concaténation), - (Soustraction), & (Opérateur AND au niveau du bit), ^ (Opérateur OR exclusif au niveau du bit), | (Opérateur OR au niveau du bit)

4

=, >, <, >=, <=, <>, !=, !>, !< (opérateurs de comparaison)

5

NOT

6

AND

7

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

8

= (Affectation)

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. 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é en premier pour produire une seule valeur, qui est ensuite 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. Par conséquent, il est évalué 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 effectué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. Le résultat est alors 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

Référence

Opérateurs logiques (Transact-SQL)

Opérateurs (Transact-SQL)

Fonctions intégrées (Transact-SQL)