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

MySQL REGEXP로 문자열 내 특정 문자 순서대로 검색하는 방법

MySQL에서 문자열 내 특정 문자 검색하기

MySQL에서 문자열 안에 특정 문자들이 포함되어 있는지 확인하려면 REGEXP(정규 표현식)를 사용하는 것이 가장 효과적입니다. 예를 들어, 문자열 내에 J, A, V, A라는 문자가 순서대로 존재하는지 검색해 보겠습니다.

1. 테이블 생성

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
(
   Value varchar(50)
);
Query OK, 0 rows affected (3.92 sec)

2. 데이터 삽입

INSERT 명령을 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable values('XYSJGHAKLMVDFFSA');
Query OK, 1 row affected (0.67 sec)
mysql> insert into DemoTable values('PQRSTJAVAL');
Query OK, 1 row affected (0.58 sec)
mysql> insert into DemoTable values('SJATUVAK');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('JSTUVA');
Query OK, 1 row affected (0.32 sec)

3. 전체 레코드 조회

SELECT 문으로 테이블의 모든 레코드를 확인합니다.

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+------------------+
| Value |
+------------------+
| XYSJGHAKLMVDFFSA |
| PQRSTJAVAL |
| SJATUVAK |
| JSTUVA |
+------------------+
4 rows in set (0.00 sec)

4. REGEXP를 이용한 문자 검색 쿼리

문자열 내에서 J → A → V → A 순서로 문자가 등장하는지 확인하려면 아래와 같이 정규 표현식 패턴을 작성합니다. 여기서 .*는 임의의 문자가 0개 이상 존재함을 의미합니다.

mysql> select *from DemoTable where Value REGEXP '.*J.*A.*V.*A';

실행 결과는 다음과 같습니다.

+------------------+
| Value |
+------------------+
| XYSJGHAKLMVDFFSA |
| PQRSTJAVAL |
| SJATUVAK |
+------------------+
3 rows in set (0.00 sec)

결과 분석

위 결과를 보면 4개의 레코드 중 3개만 반환되었습니다. 마지막 레코드인 JSTUVA는 J 다음에 A가 있지만, 그 뒤에 V와 A가 순서대로 나오지 않기 때문에 조건에 맞지 않아 제외된 것입니다. 반면 나머지 세 문자열은 모두 J, A, V, A가 순서대로 포함되어 있어 정상적으로 조회되었습니다.

이처럼 REGEXP 패턴을 활용하면 단순 포함 여부뿐 아니라 문자의 등장 순서까지 유연하게 검색할 수 있습니다.