MySQL에서 특정 값을 가진 레코드를 검색할 때는 LIKE 연산자 또는 REGEXP(정규 표현식) 연산자를 사용할 수 있습니다. 두 방법 모두 WHERE 절과 함께 사용되며, 상황에 따라 적합한 도구가 다릅니다.
1. 예제 테이블 생성
먼저 실습에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable651 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Value varchar(100) ); Query OK, 0 rows affected (0.59 sec)
2. 샘플 데이터 삽입
INSERT 명령어를 사용하여 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable651(Value) values('Title');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable651(Value) values('course');
Query OK, 1 row affected (0.26 sec)
mysql> insert into DemoTable651(Value) values('subject');
Query OK, 1 row affected (0.20 sec)3. 전체 데이터 확인
SELECT 문으로 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable651;
실행 결과는 다음과 같습니다.
+----+---------+ | Id | Value | +----+---------+ | 1 | Title | | 2 | course | | 3 | subject | +----+---------+ 3 rows in set (0.00 sec)
4. LIKE를 사용한 특정 값 검색
LIKE 연산자는 와일드카드(%, _)와 함께 패턴 매칭을 수행합니다. 정확한 단어를 찾으려면 아래처럼 조건을 그대로 지정하면 됩니다.
mysql> select *from DemoTable651 where Value LIKE 'course';
'course'라는 값을 가진 레코드만 반환됩니다.
+----+--------+ | Id | Value | +----+--------+ | 2 | course | +----+--------+ 1 row in set (0.00 sec)
만약 부분 일치를 원한다면 LIKE '%course%'처럼 와일드카드를 활용하면 됩니다. 이 경우 'mycourse', 'coursework' 같은 값도 함께 검색됩니다.
5. REGEXP를 사용한 특정 값 검색
REGEXP 연산자는 정규 표현식 기반으로 더 복잡하고 유연한 패턴 매칭이 가능합니다.
mysql> select *from DemoTable651 where Value REGEXP 'course';
결과는 LIKE와 동일하게 해당 값을 포함하는 레코드를 반환합니다.
+----+--------+ | Id | Value | +----+--------+ | 2 | course | +----+--------+ 1 row in set (0.00 sec)
6. LIKE와 REGEXP의 차이점
- LIKE: 간단한 패턴 매칭에 적합합니다. % (임의의 문자열), _ (단일 문자) 와일드카드만 지원하며, 성능 면에서 유리한 경우가 많습니다.
- REGEXP: 정규 표현식을 지원하므로 문자 클래스([a-z]), 반복(*, +), 대안(|) 등 복잡한 검색 조건을 구현할 수 있습니다.
- LIKE는 전체 문자열과 패턴이 일치해야 하지만, REGEXP는 문자열 내 어느 부분이라도 패턴과 일치하면 매칭됩니다.
간단한 접두사·접미사 검색에는 LIKE를, 복잡한 패턴 조건이 필요하다면 REGEXP를 사용하는 것이 좋습니다.