Compartir a través de


Prioridad de operador (Transact-SQL)

Cuando una expresión compleja tiene múltiples operadores, la prioridad de operador determina la secuencia en que se realiza la operación. El orden de ejecución puede afectar de manera significativa al valor resultante.

Se aplica a: SQL Server (desde SQL Server 2008 hasta la versión actual), Windows Azure SQL Database (desde la versión inicial hasta la versión actual).

Los operadores tienen los niveles de prioridad que se muestran en la siguiente tabla. Un operador de los niveles más altos se evalúa antes que un operador de un nivel más bajo.

Nivel

Operadores

1

~ (operador bit a bit NOT)

2

* (multiplicar), / (dividir), % (módulo)

3

+ (positivo), - (negativo), + (sumar), (+ concatenar), - (restar), & (AND bit a bit), ^ (OR exclusiva bit a bit), | (OR bit a bit)

4

=, >, <, >=, <=, <>, !=, !>, !< (operadores de comparación)

5

NOT

6

AND

7

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

8

= (asignación)

Cuando en una expresión dos operadores tengan el mismo nivel de prioridad de operador, se evalúan de izquierda a derecha en función de su posición dentro de la expresión. Por ejemplo, en la expresión utilizada en la siguiente instrucción SET, el operador de resta se evalúa antes que el operador de suma.

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

Utilice paréntesis para suplantar la prioridad definida de los operadores en una expresión. Todo lo que está dentro del paréntesis se evalúa en primer lugar para producir un valor antes de que dicho valor lo pueda utilizar cualquier otro operador que se encuentre fuera del paréntesis.

Por ejemplo, en la expresión utilizada en la siguiente instrucción SET, el operador de multiplicación tiene una prioridad mayor que el operador de suma. Por lo tanto, se evalúa antes; el resultado de la expresión es 13.

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

En la expresión utilizada en la siguiente instrucción SET, el paréntesis hace que primero se lleve a cabo la suma. El resultado de la expresión es 18.

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

Si una expresión tiene paréntesis anidados, se evalúa primero la expresión más anidada. El siguiente ejemplo contiene paréntesis anidados, con la expresión 5 - 3 en el conjunto de paréntesis más anidado. Esta expresión produce un valor de 2. Entonces, el operador de suma (+) suma este resultado a 4. Esto produce un valor de 6. Finalmente, 6 se multiplica por 2 para producir un resultado de expresión de 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;

Vea también

Referencia

Operadores lógicos (Transact-SQL)

Operadores (Transact-SQL)

Funciones integradas (Transact-SQL)