배움터  
  HOME > 배움터 > Daily Tip
Daily Tip

제품:   Access 버전:   공통
검색어:   검색
제목:   일부분의 정보만으로 검색하기
     
 

New Page 2
  STEP> 검색하기

※ 아래 Daily Tip은 염기웅님이 제공해주신 내용입니다

우리가 데이터베이스에서 검색을 수행할 때는 정확한 값을 알고 찾을 때가 있고, 정확하지 않은 값으로 검색할 때가 있습니다. 정확한 값을 알고 검색할 때는 큰 문제가 없으나 일부분의 값만 알고 있을 때는 어떻게 쿼리를 구성해야 하는지 알아보도록 하겠습니다.

<1> 우선, 정확한 값을 알고 있을 때의 검색 방법에 대해서 알아보겠습니다. 제품 테이블에서 제품 카테고리가 유제품인 것을 검색하기 위해서는 다음 그림과 같이 쿼리를 구성하면 됩니다.

<2>이 쿼리의 결과는 다음 그림과 같습니다. 제품 테이블에서 제품 분류가 유제품인 것만 구하는 쿼리이지요.

<3> 이번에는 제품명으로 검색을 하는데, 어떤 것인지 잘 모르지만 아이스크림 이라는 단어가 들어간다는 사실은 알고 있을 때로 가정해 보겠습니다. 이 때 다음과 같이 쿼리를 구성할 가능성이 있습니다.

<4> 쿼리의 결과는 빈 레코드를 반환합니다. 이것은 왜 그럴까요? 이 쿼리는 아이스크림이 들어간 레코드를 찾는 것이 아니고, 제품 이름 필드에 정확히 아이스크림이라는 값이 들어간 레코드를 찾는 의미를 가지고 있기 때문에 이런 결과를 보여주는 것입니다.

<5> 자, 이제 제품 이름이 무엇인지는 잘 모르지만, ‘아이스크림’이 들어간 것은 확실하다고 가정해 본다면, 다음과 같이 쿼리를 구성해 보기 바랍니다.

<6> 여기서 주의해야 할 것은 아이스크림 앞뒤로 ‘*’표가 들어갔다는 점입니다. 이 쿼리의 결과는 다음과 같습니다. 제품 이름 필드에 아이스크림이라는 것이 들어간 레코드는 모두 표시되었습니다.

사실, 많은 부분에서 사용자들이 접하는 검색은 이러한 방식이 많습니다. 정확히 어떤 값을 알고 검색하기 보다는, 일부분을 가지고 검색해야 하는 경우가 보다 많을 겁니다. 이러한 검색을 어떻게 수행하는지 알아보도록 하겠습니다.

앞서 식을 살펴보면,
 
Like “*아이스크림*”

이라고 되어 있는데 이 식에서 Like는 일부분이라도 일치하면 검색하겠다는 의미를 가지고 있습니다. 그리고 ‘*’ 는 와일드 카드라고 해서 모든 문자열을 대체하는 예약어입니다. 그래서 이 문장의 정확한 의미는 아이스크림 앞이나 뒤에 어떤 단어나 구가 포함되어도 무방하다는 의미입니다. 결과적으로 해당하는 필드 안에서 아이스크림이라는 단어가 포함되는 레코드를 모두 출력하게 됩니다.

만약 이 식을 ‘아이스크림*’ 으로 한다면 이 식의 의미는 아이스크림으로 시작되는 모든 레코드를 의미하며, ‘*아이스크림’ 으로 한다면 아이스크림으로 끝나는 모든 레코드를 의미합니다.

그 이외에도 ‘?’, ‘[]’ 등의 와일드카드가 있습니다. 이것은 다음에 다시 알아보도록 하겠습니다.