Prioridad de operador (Transact-SQL)Operator Precedence (Transact-SQL)

Se aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL DatabaseSe aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database

Cuando una expresión compleja tiene múltiples operadores, la prioridad de operador determina la secuencia en que se realizan las operaciones.When a complex expression has multiple operators, operator precedence determines the sequence of operations. El orden de ejecución puede afectar de manera significativa al valor resultante.The order of execution can significantly affect the resulting value.

Los operadores tienen los niveles de prioridad que se muestran en la siguiente tabla.Operators have the precedence levels shown in the following table. Un operador de los niveles más altos se evalúa antes que un operador de un nivel más bajo.An operator on higher levels is evaluated before an operator on a lower level. En la tabla siguiente, 1 es el nivel más alto y 8 es el nivel más bajo.In the following table, 1 is the highest level and 8 is the lowest level.

NivelLevel OperadoresOperators
11 ~ (operador bit a bit NOT)~ (Bitwise NOT)
22 * (multiplicación), / (división), % (módulo)* (Multiplication), / (Division), % (Modulus)
33 + (positivo), - (negativo), + (suma), + (concatenación), - (resta), & (AND bit a bit), ^ (OR exclusivo bit a bit), | (OR bit a bit)+ (Positive), - (Negative), + (Addition), + (Concatenation), - (Subtraction), & (Bitwise AND), ^ (Bitwise Exclusive OR), | (Bitwise OR)
44 =, >, <, >=, <=, <>, !=, !>, !< (operadores de comparación)=, >, <, >=, <=, <>, !=, !>, !< (Comparison operators)
55 NOTNOT
66 yAND
77 ALL, ANY, BETWEEN, IN, LIKE, OR, SOMEALL, ANY, BETWEEN, IN, LIKE, OR, SOME
88 = (asignación)= (Assignment)

Cuando en una expresión dos operadores tienen el mismo nivel de prioridad, se evalúan de izquierda a derecha en función de su posición dentro de la expresión.When two operators in an expression have the same precedence level, they're evaluated left to right based on their position in the expression. 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.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;  

Utilice paréntesis para suplantar la prioridad definida de los operadores en una expresión.Use parentheses to override the defined precedence of the operators in an expression. Todo el contenido dentro del paréntesis se evalúa para obtener un valor único.Everything within parentheses is evaluated to yield a single value. Ese valor puede ser utilizado por cualquier otro operador fuera de los paréntesis.That value can be used by any operator outside those parentheses.

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.For example, in the expression used in the following SET statement, the multiplication operator has a higher precedence than the addition operator. La operación de multiplicación se evalúa antes; el resultado de la expresión es 13.The multiplication operation 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;  

En la expresión utilizada en la siguiente instrucción SET, el paréntesis hace que primero se lleve a cabo la suma.In the expression used in the following SET statement, the parentheses cause the addition to be evaluated first. El resultado de la expresión es 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 una expresión tiene paréntesis anidados, se evalúa primero la expresión más anidada.If an expression has nested parentheses, the most deeply nested expression is evaluated first. El siguiente ejemplo contiene paréntesis anidados, con la expresión 5 - 3 en el conjunto de paréntesis más anidado.The following example contains nested parentheses, with the expression 5 - 3 in the most deeply nested set of parentheses. Esta expresión produce un valor de 2.This expression yields a value of 2. Entonces, el operador de suma (+) suma este resultado a 4, dando como resultado 6.Then, the addition operator (+) adds this result to 4 which yields a value of 6. Finalmente, 6 se multiplica por 2 para producir un resultado de expresión de 12.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;  

Consulte tambiénSee Also

Operadores lógicos (Transact-SQL) Logical Operators (Transact-SQL)
Operadores (Transact-SQL) Operators (Transact-SQL)
Funciones integradas (Transact-SQL)Built-in Functions (Transact-SQL)