다음을 통해 공유


조건 창에서 검색 조건을 결합하기 위한 규칙(Visual Database Tools)

적용 대상:SQL Server

원하는 수 및 연산자와 연결된 검색 조건을 포함하는 쿼리를 ANDOR 만들 수 있습니다. 절과 AND 절이 OR 결합된 쿼리는 복잡해질 수 있으므로 쿼리를 실행할 때 이러한 쿼리가 해석되는 방식과 이러한 쿼리가 조건 창(Visual Database Tools) 및 SQL 창(Visual Database Tools)에 표시되는 방식을 이해하는 것이 좋습니다.

메모

하나 AND 또는 연산자만 포함된 검색 조건에 대한 자세한 내용은 OR여러 열에 대해 여러 검색 조건 지정(Visual Database Tools)을 참조 하세요.

이 문서에서는 다음 정보에 대해 알아봅니다.

  • 둘 다 포함하는 쿼리의 AND 우선 순위입니다 OR .

  • 조건 ANDOR 절이 논리적으로 서로 관련되는 방식입니다.

  • 쿼리 및 뷰 디자이너가 조건 창 쿼리에서 두 쿼리를 모두 ANDOR포함하는 방법을 나타냅니다.

아래의 토론을 이해하는 데 도움이 되도록 열employeehire_date이 포함된 테이블로 job_lvl 작업하고 있다고 status상상해 보세요. 이 예제에서는 직원이 회사에서 근무한 기간(즉, 직원의 고용 날짜), 직원이 수행하는 작업 유형(작업 수준) 및 직원의 상태(예: 사용 중지)와 같은 정보를 알아야 한다고 가정합니다.

AND 및 OR의 우선 순위

쿼리가 실행되면 먼저 연결된 절과 연결된 ANDOR절을 평가합니다.

메모

연산자는 NOT 둘 다 AND 보다 우선합니다.OR

예를 들어 회사에서 5년 이상 근무한 직원 또는 고용 날짜와 관계없이 중간 수준의 일자리를 가진 직원을 찾으려면 다음과 같은 조항을 작성 WHERE 할 수 있습니다.

WHERE
   hire_date < '01/01/95' AND
   job_lvl = 100 OR
   job_lvl = 200

기본 AND우선 순위를 재정의하려면 SQL 창에서 OR 특정 조건에 괄호를 배치할 수 있습니다. 괄호 안의 조건은 항상 먼저 평가됩니다. 예를 들어 하위 또는 중간 수준의 작업에서 5년 이상 회사에 근무한 모든 직원을 찾으려면 다음과 같은 절을 WHERE 생성할 수 있습니다.

WHERE
   hire_date < '01/01/95' AND
   (job_lvl = 100 OR job_lvl = 200)

명확성을 위해 기본 우선 순위에 의존하지 않고 결합 AND 할 때 항상 괄호와 OR 절을 포함하는 것이 좋습니다.

AND가 여러 OR 절을 사용하는 방법

결합 시 절과 AND 관련된 방법을 OR 이해하면 쿼리 및 뷰 디자이너에서 복잡한 쿼리를 생성하고 이해하는 데 도움이 될 수 있습니다.

여러 조건을 사용하여 AND연결하는 경우 연결된 AND 첫 번째 조건 집합이 두 번째 집합의 모든 조건에 적용됩니다. 즉, 다른 조건에 연결된 AND 조건은 두 번째 집합의 모든 조건에 분산됩니다. 예를 들어 다음의 도형 표현은 조건 집합 AND 에 연결된 조건을 보여 OR 있습니다.

A AND (B OR C)

위의 표현은 조건이 두 번째 조건 집합에 배포되는 방법을 AND 보여 주는 다음 도식 표현과 논리적으로 동일합니다.

(A AND B) OR (A AND C)

이 분산 원칙은 쿼리 및 뷰 디자이너를 사용하는 방법에 영향을 줍니다. 예를 들어, 하위 또는 중간 수준의 일자리에서 5년 이상 회사에 근무한 모든 직원을 찾고 있다고 가정해 보겠습니다. SQL 창의 문에 다음 WHERE 절을 입력합니다.

WHERE (hire_date < '01/01/95') AND
   (job_lvl = 100 OR job_lvl = 200)

연결된 AND 절은 .와 연결된 OR두 절 모두에 적용됩니다. 이를 표현하는 명시적 방법은 절의 AND 각 조건에 대해 조건을 한 번 반복하는 것입니다 OR . 다음 문은 이전 문보다 더 명시적이고 길지만 논리적으로 동일합니다.

WHERE (hire_date < '01/01/95') AND
  (job_lvl = 100) OR
  (hire_date < '01/01/95') AND
  (job_lvl = 200)

연결된 AND 절에 절을 배포하는 OR 원칙은 관련된 개별 조건 수에 관계없이 적용됩니다. 예를 들어 회사에 5년 이상 근무했거나 퇴직한 상위 또는 중간 수준의 직원을 찾고자 하는 경우를 가정해 보겠습니다. 절은 WHERE 다음과 같을 수 있습니다.

WHERE
   (job_lvl = 200 OR job_lvl = 300) AND
   (hire_date < '01/01/95') OR (status = 'R')

연결된 AND 조건이 분산된 후 절은 WHERE 다음과 같습니다.

WHERE
   (job_lvl = 200 AND hire_date < '01/01/95') OR
   (job_lvl = 200 AND status = 'R') OR
   (job_lvl = 300 AND hire_date < '01/01/95') OR
   (job_lvl = 300 AND status = 'R')

조건 창에서 여러 AND 및 OR 절을 나타내는 방법

쿼리 및 뷰 디자이너는 조건 창(Visual Database Tools)의 검색 조건을 나타냅니다. 그러나 여러 절이 연결된 ANDOR경우에 조건 창의 표현이 예상과 다를 수 있습니다. 또한 조건 창 또는 다이어그램 창(Visual Database Tools)에서 쿼리를 수정하는 경우 입력한 것과 SQL 문이 변경된 것을 확인할 수 있습니다.

일반적으로 이러한 규칙은 조건 창에 표시되는 방법과 ANDOR 절을 지정합니다.

  • 연결된 AND 모든 조건은 필터 그리드 열 또는 동일한 Or... 열에 표시됩니다.

  • 연결된 OR 모든 조건은 별도의 Or... 열에 표시됩니다.

  • 절 조합의 AND 논리적 결과가 여러 ORAND 로 분산되는 경우 조건 창은 절을 필요한 횟수만큼 반복하여 OR 이를 명시적으로 AND 나타냅니다.

예를 들어 SQL 창에서 다음과 같은 검색 조건을 만들 수 있습니다. 이 경우 연결된 AND 두 절이 연결된 세 번째 OR절보다 우선합니다.

WHERE (hire_date < '01/01/95') AND
  (job_lvl = 100) OR
  (status = 'R')

쿼리 및 뷰 디자이너는 다음과 같이 조건 창에서 이 WHERE 절을 나타냅니다.

조건 창의 OR 절 우선 순위 스크린샷

그러나 연결된 OR 절이 절 AND 보다 AND 우선하는 경우 절은 각 OR 절에 대해 반복됩니다. 이렇게 하면 절이 ANDOR 절에 배포됩니다. 예를 들어 SQL 창에서 다음과 같은 절을 WHERE 만들 수 있습니다.

WHERE (hire_date < '01/01/95') AND
  ( (job_lvl = 100) OR
  (status = 'R') )

쿼리 및 뷰 디자이너는 다음과 같이 조건 창에서 이 WHERE 절을 나타냅니다.

조건 창의 여러 AND 및 OR 절 스크린샷

연결된 OR 절에 데이터 열이 하나만 포함된 경우 쿼리 및 뷰 디자이너는 절을 반복 OR 할 필요가 없도록 전체 AND 절을 그리드의 단일 셀에 배치할 수 있습니다. 예를 들어 SQL 창에서 다음과 같은 절을 WHERE 만들 수 있습니다.

WHERE (hire_date < '01/01/95') AND
  ((status = 'R') OR (status = 'A'))

쿼리 및 뷰 디자이너는 다음과 같이 조건 창에서 이 WHERE 절을 나타냅니다.

조건 창에 정의된 연결된 OR 절의 스크린샷

쿼리를 변경하는 경우(예: 조건 창에서 값 중 하나를 변경) 쿼리 및 뷰 디자이너는 SQL 창에서 SQL 문을 다시 만듭니다. 다시 생성된 SQL 문은 원래 문이 아닌 조건 창 표시와 유사합니다. 예를 들어 조건 창에 분산 절이 AND 포함된 경우 SQL 창의 결과 문은 명시적 분산 AND 절을 사용하여 다시 만들어집니다. 자세한 내용은 이 문서의 앞부분에 있는 여러 OR 절에서 AND가 작동하는 방법을 참조하세요.