Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 LIKE와 REGEXP로 특정 값 검색하기 – 실전 예제로 배우는 방법

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를 사용하는 것이 좋습니다.