본문 바로가기
Back-end/DB

[MySQL] 와일드카드를 이용한 필터링

by 며루치꽃 2021. 5. 25.

LIKE 연산자 사용하기 

 

검색 절에서 와일드카드를 사용하려면 반드시 LIKE 연산자를 사용해야한다. LIKE는 뒤에 나오는 검색 패턴과 일치하는 데이터를 찾는게 아니라 와일드 카드를 사용하여 비교한다. 와일드카드 검색은 텍스트 열(문자열)에서만 사용할 수 있으며, 문자열이 아닌 열을 검색할 때는 와일드카드를 사용할 수 없다. 

 

와일드카드

여러 데이터에서 부분적으로 일치하는 값이 있는지 확인할 때 사용되는 특수 문자

 

검색패턴

문자나 와일드카드 또는 이 두개의 조합으로 구성된 검색 조건

 

% 와일드 카드

가장 자주 사용하는 와일드카드는 %이다. 검색할 문자열에서 %는 임의의 수의 문자를 의미한다. 

 

 

SELECT prod_id, prod_name
FROM products;

products의 전체에 대한 결과에서 Fish라는 단어로 시작하는 제품을 찾고 싶다면 LIKE 키워드를 이용해주면 된다.

 

SELECT prod_id, prod_name
FROM products
WHERE prod_name LIKE 'Fish%';

 

 

이렇게 된다면 'Fish%' 라는 검색 패턴을 사용한다. 이 쿼리가 실해오딜 때 Fish로 시작하는 값이 있다면, 모두 검색된다. 와일드카드 %는 DBMS에게 Fish라는 단어 뒤로 몇 개의 문자가 오든지 허용하라고 지시한다.

 

와일드카드는 검색 패턴 내 어디에서나 사용할 수 있고, 여러 개의 와일드카드를 같이 사용할 수도 있다. 다음은 양 끝에 와일드카드를 하나씩 사용한 예이다.

 

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

 

'%bean bag%' 검색 패턴은 bean bag을 포함한 문자열을 검색한다. 앞이나 뒤에 어떤 문자열이 와도 관계가 없다.

 

검색 패턴에 사용된 %는 하나 이상의  문자 뿐아니라 0개의 문자를 뜻할 수도 있다. 즉, %는 검색 패턴이 사용된 위치에서 0개, 1개 또는 그 이상의 문자를 대신할 수도 있다. 

 

이 뿐만이 아니라 와일드 카드를 검색 패턴의 중간에 사용할 수도 있는데 예를 들어 'WHERE email LIKE 'sky%@naver.com'과 같이 일부만으로 검색을 할 때도 사용할 수 있다. 

 

_ 와일드카드

언더라인(_)은 % 와일드카드가 여러 문자열을 대신할 수 있는 것과는 달리 _ 와일드카드는 단 한 개의 문자를 대신한다.

SELECT prod_id, prod_name
FROM products
WHERE prod_name LIKE '_ inch teddy bear';

 

_ 와일드 카드는 한 개의 문자를 대신하기 때문에 8을 대신하여 검색되었다.

SELECT prod_id, prod_name
FROM products
WHERE prod_name LIKE '__ inch teddy bear';

위에서는 2개의 _ 와일드 카드를 사용하였기 떄문에 2개의 문자를 대신하였다. 이를 통해 2개의 문자가 대신하여 검색되었다.

 

와일드카드 사용 팁

와일드 카드는 매우 유용하지만 주의해야할 규칙이 있다.

1. 와일드카드를 남용해서는 안 된다. 다른 검색 연산자를 이용해서 검색이 가능하다면, 그것을 이용해야한다

2. 꼭 필요한 경우가 아니라면 검색 패턴 시작에 와일드카드를 사용하지 말자. 와일드카드로 시작하는 검색 패턴은 처리가 가장 느리다.

3, 와일드카드 기호의 위치 선정에 주의해야한다. 만약 와일드카드를 잘못된 곳에 사용한다면 의도한 것과 다른 데이터가 검색된다.

댓글