2011-05-11 7 views
12

우리는이 SQL에 괄호를 사용 않는 이유를 아는 사람 있을지 궁금 된 OR 절에 사용할 다음과 같이 그래서, 형식은 간다 그의 이름은 A 또는 B로 시작합니다 (프랑스어의 대략적인 번역). SQL의 괄호

나는 다음과 같은 방법으로 대답은 WHERE에 대한 우려 마지막 기본적으로

SELECT service.nom_serv, localite.ville, localite.departemen 
FROM service, localite, employe 
WHERE service.code_loc=localite.code_loc 
AND employe.service=service.code_serv 
AND ((employe.nom LIKE 'A%') OR (employe.nom LIKE 'B%')) 

을, 나는 단순히 SQL이와 나 직원을 선택해야하기 위해 괄호없이 할 수있는 자신의 이름은 A 또는 B로 시작 하는가? 그런 식으로 괄호를 배치하면 어떤 차이가 있습니까? 그리고 괄호를 두 번 사용합니까? 또는 AND가 선행하기 때문에 마지막 절에서 OR의 우선 순위를 매기는 것입니까?

+0

괄호에 대한 별표를 잊어 버리십시오. 질문을 올렸을 때 어딘가에서 작성한 오류입니다. – angela

+1

나는 그들을 제거했다. –

+0

답변 해 주셔서 감사합니다. 훌륭한 도움을주었습니다 – angela

답변

19

SQL 서버에서 Operator Precedence을 살펴보십시오 (사용자는 지정하지 않았지만 모든 RDBMS에서 동일하다고 생각합니다). 이것은 괄호 안의 AND는 OR보다 먼저 평가된다는 것을 의미합니다. 특정 경우에 따라서

, 괄호없이 조건은 다음과 같습니다

  • employe.service=service.code_serv AND employe.nom LIKE 'A%'

또는

  • employe.nom LIKE 'B%'
10

우선 순위가 아닌 절의 그룹화를 지정하는 데 사용합니다. 최적화 프로그램이 가장 우선 순위를 만들 때 SQL은 우선 순위를 지정할 수 없습니다.

AND() 

OR 조건 모두를 하나의 명령문으로 사용합니다. 따라서 어느 쪽이든 true이면 AND도 마찬가지입니다. 내부 괄호는 필요하지 않지만 분리를 시각화하는 데 도움이됩니다.

외부 괄호가 없으면 마지막 절이있는 항목을 모두 참으로 사용할 수 있습니다.

0

뭔가를 강조하기 위해 여기에 있다고 가정하므로 지금은 무시하고 있습니다. 내가 틀렸다면 저를 수정하십시오.

I는 다음과 같이 그 일을 제안 : 비슷한

(...) 
AND employe.nom REGEX '^[AB]' 

... 또는 무언가를.

사과드립니다. 그러나 괄호에 대해 묻는 주요 질문은 나에게 분명하지 않습니다.

1

추가 parenthes 있습니다 입니다. 수학의 규칙은 논리를 명확하게하기 위해 괄호를 추가하는 것입니다. 이 경우 괄호를 모두 제거하면 잘못된 답을 얻을 수 있습니다. 가지고있는 것은 AND ((b) OR (c))입니다. 모든 괄호를 제거하면 올바르지 않은 (a 또는 b) AND (a 또는 c)에서 (a 및 b) 또는 c로 변경됩니다.