Pierwszeństwo operatorów logicznych
Kiedy więcej niż jeden operator logiczny jest używany w instrukcja, nie jest obliczana jako pierwsza, I następnie i wreszcie lub.Arytmetyczne i bitowe, operatory są obsługiwane przed operatorów logicznych.
W poniższym przykładzie kolor warunek dotyczy modelu produktu 21 , a nie do modelu produktu 20, ponieważ AND ma pierwszeństwo przed OR.
USE AdventureWorks2008R2;
GO
SELECT ProductID, ProductModelID
FROM AdventureWorks2008R2.Production.Product
WHERE ProductModelID = 20 OR ProductModelID = 21
AND Color = 'Red'
Znaczenie kwerendy można zmienić, dodając nawiasy, aby wymusić oceny OR pierwszym.Następująca kwerenda powoduje znalezienie tylko produkty w modelach 20 i 21 , które są red.
SELECT ProductID, ProductModelID
FROM AdventureWorks2008R2.Production.Product
WHERE (ProductModelID = 20 OR ProductModelID = 21)
AND Color = 'Red'
Za pomocą nawiasów, nawet w przypadku, gdy nie są wymagane, można poprawić czytelność kwerend i zmniejszenie szansy dokonywania subtelne pomyłka z powodu operator.Za pomocą nawiasów nie ma żadnych znaczących wydajnie.Poniższy przykład jest bardziej czytelny niż oryginalny przykład, chociaż syntaktycznie są takie same.
SELECT ProductID, ProductModelID
FROM AdventureWorks2008R2.Production.Product
WHERE ProductModelID = 20 OR (ProductModelID = 21
AND Color = 'Red')
Zobacz także