[SQL] 와일드카드 문자를 이용한 필터링

CC·2022년 10월 11일
0

LIKE 연산자 사용하기

  • 와일드카드란 여러 데이터에서 부분적으로 일치하는 값이 있는지 확인할 때 사용되는 특수문자이다.
  • 와일드카드는 SQL WHERE 절에서 특별한 의미가 있는 문자이다.
  • 검색 절에서 와일드카드를 사용하려면 반드시 LIKE연산자를 사용해야 한다.
  • LIKE는 뒤에 나오는 검색 패턴과 일치하는 데이터를 찾는 게 아니라 와일드카드를 사용해 비교한다.
  • 와일드카드 검색은 텍스트 열(문자열)에서만 사용할 수 있다.

% 와일드카드

/* %는 임의의 수의 문자를 의미한다.
특정 문자열을 포함한 열을 찾고 싶을 때 사용한다. */
SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE 'Fish%';

SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE '%bean bag%';

_ 와일드카드

/* _ 와일드카드는 단 한 개의 문자를 대신한다.
Db2에서는 _ 와일드카드가 지원되지 않는다. */
SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE '__ inch teddy bear%';

집합([]) 와일드카드

/* [] 와일드카드는 문자들을 하나의 집합으로 지정해 사용하는데, 
이들 문자 중 하나는 지정된 위치(와일드카드가 지정한)의 문자와 반드시 일치하는 검색 결과를 가져온다.
집합 와일드카드는 일반적으로 지원되지 않으므로 DBMS 매뉴얼을 확인해야한다. */
SELECT cust_contact
FROM Customers
WHERE cust_contact LIKE '[JM]%'; -- J또는 M으로 시작하는 연락처 찾기
WHERE cust_contact LIKE '[^JM]%'; -- J또는 M으로 시작하지 않는 연락처 찾기
(= WHERE NOT cust_contact LIKE '[JM]%;)

후행 공백에 주의하자
예를 들어 50개의 문자를 넣을 수 있는 열에 길이가 17인 문자열을 저장하면, 열을 채우기 위해 33개의 공백이 추가될 수 있다.
문자열을 검색할 때 값에 공백이 추가되었다면, 끝나는 값이 공백이 되므로 검색패턴에 %를 추가하거나 함수를 이용해 공백을 제거한다.

✔️ 와일드카드 사용 팁

  • 와일드카드를 남용해서는 안된다. 다른 검색 연산자 사용이 가능하다면 그것을 이용하라.
  • 꼭 필요한 경우가 아니라면 검색 패턴 시작에 와일드카드를 사용하지 말자.
    와일드카드로 시작하는 검색 패턴은 처리가 가장 느리다.
  • 와일드카드 기호의 위치 선정에 주의하자.

0개의 댓글