Compartir vía


Precedencia del operador (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseInstancia administrada de Azure SQLBase de datos SQL en Microsoft Fabric

Cuando una expresión compleja contiene varios operadores, la precedencia del operador determina la secuencia de operaciones. El orden de ejecución puede afectar de manera significativa al valor resultante.

Los operadores tienen los niveles de prioridad que se muestran en la siguiente tabla. Un operador en un nivel superior se evalúa antes de que un operador en un nivel inferior. En la tabla siguiente, 1 es el nivel más alto y 8 es el nivel más bajo.

Level Operators
1 ~ (bit a NOTbit )
2 * (multiplicación), / (división), % (módulo)
3 +(positivo), - (negativo), + (suma), (concatenación), + (resta), &- (bit a ANDbit), ^ (exclusivo ORbit a bit ), (bit a ORbit), |<< (desplazamiento a la izquierda bit a bit), >> (desplazamiento bit a bit a la derecha)
4 =, >, <, >=, <=, <>!=, , !>!< (operadores de comparación)
5 NOT
6 AND
7 ALL, ANY, BETWEEN, IN, LIKE, , ORSOME
8 = (asignación)
Level Operators
1 ~ (bit a NOTbit )
2 * (multiplicación), / (división), % (módulo)
3 +(positivo), - (negativo), + (suma), + (concatenación), (resta), &- (bit a ANDbit ), ^ (exclusivo ORbit a bit ), | (bit a ORbit )
4 =, >, <, >=, <=, <>!=, , !>!< (operadores de comparación)
5 NOT
6 AND
7 ALL, ANY, BETWEEN, IN, LIKE, , ORSOME
8 = (asignación)

Cuando dos operadores de una expresión tienen el mismo nivel de precedencia, la evaluación se produce de izquierda a derecha en función de su posición en la expresión. Por ejemplo, en la expresión usada en la instrucción siguiente SET , el operador de resta se evalúa antes del operador de suma.

DECLARE @MyNumber AS 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 el contenido dentro del paréntesis se evalúa para obtener un valor único. Cualquier operador fuera de esos paréntesis puede usar ese valor.

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. La operación de multiplicación se evalúa primero. El resultado de la expresión es 13.

DECLARE @MyNumber AS 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 AS 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. A continuación, el operador de suma (+) agrega este resultado a 4, que produce un valor de 6. Finalmente, 6 se multiplica por 2 para producir un resultado de expresión de 12.

DECLARE @MyNumber AS 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;