SQL/MySQL

MySQL LIKE 여러 개 검색(LIKE IN), REGEXP 사용 방법

진리뷰 2023. 8. 30. 09:00
반응형

 

 

MySQL-LIKE-여러개-검색-LIKE-IN-REGEXP-사용-방법-썸네일
MySQL REGEXP 사용 방법

 

 

이 글은 REGEXP 사용 방법 설명과 예시를 담은 글입니다.

 

 

MySQL LIKE 여러 개 검색(LIKE IN)

 

MySQL의 LIKE 사용 시, 특정 문자 여러 개를 동시에 검색할 수 없을까?라고 고민합니다.

다음과 같이, '마%'와 '%사'를 동시 검색하고 싶지만... 방법을 몰라서 각각 검색해 봅니다.

하지만 우리가 진짜로 원하는 건 이게 아닙니다.

MySQL-LIKE-%-예시-1MySQL-LIKE-%-예시-2
MySQL LIKE % 예시

 

 

혹은 OR를 많이 사용할 때 한 번에 묶어주는 IN을 떠올리며, LIKE IN의 존재를 찾아봅니다.

결과는? 응~ 에러야~.

MySQL-LIKE-IN-에러이-뭔-개소리야-짤
LIKE IN 에러

 

 

MySQL REGEXP

 

이처럼  MySQL에서 여러 개의 특정 문자를 동시 검색을 하고 싶을 때, REGEXP를 사용합니다.

 

 

MySQL REGEXP 사용 방법

 

REGEXP의 사용 방법은 다음과 같습니다.

WHERE 조건식에 특정 문자들이 검색될 열 입력, REGEXP('검색 문자 1|검색 문자 2|...')를 입력합니다.

SELECT 열 1, 열 2
FROM 테이블
WHERE 검색열 REGEXP('검색 문자 1|검색문자 2|...');

 

 

REGEXP 예시

 

SELECT dep_name    -- dep_name 컬럼에서 '마' OR '인'이 포함된 값과 일치하는 dep_name 컬럼 선택.
FROM clerk    -- clerk 테이블에서
WHERE dep_name REGEXP('마|인');    -- dep_name컬럼 데이터 중 '마' OR '인'이 포함된 값만 필터링.

 

MySQL-REGEXP-예시
REGEXP 예시

 

 

REGEXP의 효율성

 

WHERE 조건식에 논리연산자 OR을 사용해서 동시 검색을 할 수 있긴 합니다.

하지만 검색할 문자가 많아진다면, 아래와 같이 OR.. OR.. OR.. OR.. OR...이라는 비효율적인 행동을 하게 됩니다.

SELECT dep_name
FROM clerk
WHERE(dep_name LIKE '마%'
    OR dep_name LIKE '인%'
    OR dep_name LIKE '%영'
    OR dep_name LIKE '%관리'..);

 

 

REGEXP의 효율성, OR 예시

 

아래의 예시는 찾으려는 문자가 2개뿐입니다.

그럼에도 불구하고 REGEXP사용할 때보다 훨씬 문장이 깁니다.

MySQL-LIKE-OR-예시
MySQL LIKE와 OR

반응형
top