MySQL의 LIKE 절을 사용하는 방법입니다.
LIKE란?
MySQL에서 LIKE 연산자는 문자열 패턴을 검색할 때 사용하는 연산자입니다.
주로 WHERE 절과 함께 사용되며, 특정 패턴과 일치하는 데이터를 조회하는 데 사용됩니다.
예를 들어, 특정 문자를 포함하거나 특정 문자로 시작하는 데이터 등을 찾을 때 사용됩니다.
LIKE 연산자는 와일드카드(%, _)와 함께 사용되며, 이 와일드카드는 특정 패턴을 표현하는 데 사용됩니다.
- %: 0개 이상의 임의의 문자열을 의미합니다. 예를 들어, LIKE 'A%'는 'A'로 시작하는 모든 문자열을 찾습니다.
- _: 정확히 하나의 임의의 문자를 의미합니다. 예를 들어, LIKE 'A_'는 'A' 다음에 정확히 한 글자가 오는 문자열을 찾습니다.
LIKE, NOT LIKE 기본 사용법
LIKE는 특정 패턴과 일치하는 데이터를 찾을 수 있고, NOT LIKE는 특정 패턴과 일치하지 않는 데이터를 찾을 수 있습니다.
LIKE
다음은 LIKE 절 예시 쿼리입니다.
# A로 시작하는 도시명
select *
from city
where Name like 'A%';
# A로 끝나는 도시명
select *
from city
where Name like '%A';
# A를 포함하는 도시명
select *
from city
where Name like '%A%';
특정 문자로 시작하거나 끝나거나 포함하는 데이터를 찾을 수 있습니다.
NOT LIKE
NOT LIKE를 사용하면 특정 문자로 시작하지 않거나, 끝나지 않거나, 포함하지 않는 데이터를 찾게 됩니다.
# A로 시작하지 않는 도시명
select *
from city
where Name not like 'A%';
# A로 끝나지 않는 도시명
select *
from city
where Name not like '%A';
# A를 포함하지 않는 도시명
select *
from city
where Name not like '%A%';
LIKE, NOT LIKE 여러개 사용법
LIKE 절을 여러개 사용하는 방법은 다양합니다.
간단하게는 OR이나 AND 연산자로 묶는 방법이 있고, REGEXP 함수를 사용하는 방법이 있습니다.
OR, AND
# A로 시작하고 A로 끝나는 데이터(AND)
select *
from city
where Name like 'A%'
and NAme like '%A';
# A로 시작하거나 B로 시작하는 데이터(OR)
select *
from city
where Name like 'A%'
or Name like 'B%';
REGEXP 함수
REGEXP 함수를 사용한 예제 쿼리입니다.
# REGEXP 함수
select *
from city
where Name regexp('A|B|C');
이 쿼리는 다음 쿼리와 동일한 의미입니다.
select *
from city
where Name like '%A%'
or Name like '%B%'
or Name like '%C%';
REGEXP는 정규식을 사용하여 데이터를 찾는 함수로, 정규식을 사용하여 LIKE 뿐만 아니라 다양한 조건으로 데이터를 찾을 수 있습니다.
LIKE 특수문자 적용하기
LIKE 절에는 일부 특수문자(언더바_, 퍼센트%)를 그대로 사용할 수 없습니다.
그래서 이스케이프 처리를 해야 합니다.
# %를 포함한 데이터 찾기
select *
from tb_1
where name like '%\%%' escape '\\';
위 쿼리는 '%' 문자를 포함하는 데이터를 찾는 쿼리입니다.
%나 _(underscore) 문자는 like절에서 특수한 기능으로 사용되는 문자라서 그냥 사용하면 안됩니다.
그래서 escape 절을 추가해서 사용해야 합니다.
escape 절은 escape 절 뒤에 오는 문자의 바로 뒤에 오는 문자는 문자로 처리해달라는 의미입니다.
위의 예제 쿼리를 보면 escape '\\'로 사용하고 있는데, 이는 역슬래시 역시 특수한 문자여서 한개만 사용하면 오류가 발생하기 때문에 2개를 사용하였습니다.
역슬래시 뒤에 있는 문자는 문자로 처리하라는 의미라서 역슬래시 뒤에 있는 % 문자는 특수한 기능을 하지 않고 문자로써 처리됩니다.