2013-03-25 3 views
2

실행중인 쿼리의 결과가 혼란 스럽습니다. 다행스럽게도이 말은 내 머리를 두드리는 것과 바보 같은 느낌으로 끝나지 않지만 여기서는 (SQL Server 2008)갑니다.쿼리 결과에 영향을주는 괄호

SELECT p.product_number,p.long_desc 
FROM products p 
WHERE p.prod_status = 1 
AND ((p.long_desc IS NULL) OR (p.long_desc LIKE '%N/A%')) 
ORDER BY p.product_number 

두 번째 버전은 이것이다 :

먼저 쿼리는 다음을이었다

SELECT p.product_number,p.long_desc 
FROM products p 
WHERE p.prod_status = 1 
AND p.long_desc IS NULL 
OR p.long_desc LIKE '%N/A%' 
ORDER BY p.product_number 

처음에 나타나지 않는 두 번째 버전의 세 가지 제품이 두 쿼리 나에게 아직있다 동일한 결과를 제공해야합니다. 두 번째 항목에는 있지만 첫 번째 항목에는 나타나지 않는 세 항목은 모두 long_desc 열에 N/A 값을 갖습니다.

그러나 N/A과 함께 많은 다른 사람이 있으며 두 버전 모두에 표시됩니다.

여기에서 괄호 사용에 대해 이해할 수없는 내용은 무엇입니까? 괄호가없는 있도록

+0

다음은 유용하게 사용할 수있는 링크입니다. com/en-us/library/ms186992 (v = sql.105) .aspx –

답변

7

ANDOR보다 높은 우선 순위를 (documentation 참조)가, 쿼리이 동일합니다 : http://msdn.microsoft :

SELECT p.product_number,p.long_desc 
FROM products p 
WHERE (p.prod_status = 1 
AND p.long_desc IS NULL) 
OR p.long_desc LIKE '%N/A%' 
ORDER BY p.product_number 
+0

나는 그 사실을 모른다고 믿을 수 없어, 고마워. – valis