반응형
이 글은 REGEXP 사용 방법 설명과 예시를 담은 글입니다.
MySQL LIKE 여러 개 검색(LIKE IN)
MySQL의 LIKE 사용 시, 특정 문자 여러 개를 동시에 검색할 수 없을까?라고 고민합니다.
다음과 같이, '마%'와 '%사'를 동시 검색하고 싶지만... 방법을 몰라서 각각 검색해 봅니다.
하지만 우리가 진짜로 원하는 건 이게 아닙니다.
혹은 OR를 많이 사용할 때 한 번에 묶어주는 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 '인'이 포함된 값만 필터링.
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사용할 때보다 훨씬 문장이 깁니다.
반응형
'SQL > MySQL' 카테고리의 다른 글
MySQL NULL 값 치환(대체), COALESCE 함수 예시 (0) | 2023.09.01 |
---|---|
MySQL 컬럼 추가 ADD 위치 지정, 여러 개 추가하는 쉬운 방법 예시 (0) | 2023.08.31 |
MySQL CONCAT과 || 유의점, 컬럼(필드) 문자열 합치기 (0) | 2023.08.29 |
MySQL 별칭 ALIAS 사용 방법, 규칙, 차이점 (2) | 2023.08.28 |
MySQL 중복 제거 DISTINCT 쉬운 사용법 예시 (0) | 2023.08.26 |