Prioridad de los operadores lógicos
Cuando en una instrucción se usa más de un operador lógico, primero se evalúa NOT, luego AND y, finalmente, OR. Los operadores aritméticos y bit a bit se tratan antes que los operadores lógicos.
En el siguiente ejemplo, la condición de color pertenece al modelo de producto 21
y no al modelo de producto 20
porque AND
tiene prioridad sobre OR
.
SELECT ProductID, ProductModelID
FROM AdventureWorks.Production.Product
WHERE ProductModelID = 20 OR ProductModelID = 21
AND Color = 'Red'
Puede cambiar el significado de la consulta si agrega paréntesis para provocar que OR
se evalúe primero. La siguiente consulta busca solamente los productos en los modelos 20
y 21
que sean rojos.
SELECT ProductID, ProductModelID
FROM AdventureWorks.Production.Product
WHERE (ProductModelID = 20 OR ProductModelID = 21)
AND Color = 'Red'
El uso de paréntesis, incluso cuando no se necesitan, puede mejorar la comprensión de las consultas y reducir las posibilidades de cometer un error debido a la prioridad de los operadores. No hay ninguna reducción significativa del rendimiento que sea achacable al uso de paréntesis. El siguiente ejemplo se lee mejor que el ejemplo original, aunque ambos son sintácticamente iguales.
SELECT ProductID, ProductModelID
FROM AdventureWorks.Production.Product
WHERE ProductModelID = 20 OR (ProductModelID = 21
AND Color = 'Red')
Vea también
Otros recursos
Operadores (Transact-SQL)
WHERE (Transact-SQL)