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

MySQL REGEXP로 특정 문자열과 숫자 조합으로 시작하는 레코드 조회하기

개요

MySQL에서 특정 문자열 뒤에 지정한 숫자가 이어지는 형태의 데이터를 조회하려면 REGEXP 연산자를 활용하면 됩니다. 정규 표현식의 앵커(^)와 문자 클래스([])를 조합하면 원하는 패턴에 일치하는 레코드만 손쉽게 추출할 수 있습니다.

기본 문법

다음은 REGEXP를 사용해 특정 문자열과 숫자 조합으로 시작하는 레코드를 조회하는 기본 문법입니다.

SELECT yourColumnName1, yourColumnName2
FROM yourTableName
WHERE yourColumnName2 REGEXP '^yourStringValue[yourNumericValue]';
  • ^ : 문자열의 시작을 의미하는 앵커입니다.
  • [ ] : 대괄호 안에 나열된 문자 중 하나와 일치함을 나타내는 문자 클래스입니다.

예제 테이블 생성

먼저 실습용 테이블을 생성해 보겠습니다.

mysql> CREATE TABLE demo45
-> (
-> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> value VARCHAR(50)
-> );
Query OK, 0 rows affected (1.50 sec)

샘플 데이터 입력

INSERT 명령어를 사용해 'John500', 'John1500'처럼 문자열과 숫자가 섞인 레코드를 입력합니다.

mysql> INSERT INTO demo45(value) VALUES('John500');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO demo45(value) VALUES('John1500');
Query OK, 1 row affected (0.11 sec)
mysql> INSERT INTO demo45(value) VALUES('John5500');
Query OK, 1 row affected (0.42 sec)
mysql> INSERT INTO demo45(value) VALUES('John6500');
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO demo45(value) VALUES('John8600');
Query OK, 1 row affected (0.19 sec)

입력된 데이터 확인

SELECT 문으로 테이블에 저장된 전체 레코드를 조회해 보겠습니다.

mysql> SELECT * FROM demo45;

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

+----+----------+
| id | value |
+----+----------+
| 1 | John500 |
| 2 | John1500 |
| 3 | John5500 |
| 4 | John6500 |
| 5 | John8600 |
+----+----------+
5 rows in set (0.00 sec)

REGEXP 쿼리 실행

이제 'John'으로 시작하고 그 뒤에 5 또는 6이 오는 레코드만 조회하는 쿼리를 작성해 보겠습니다.

mysql> SELECT id, value
-> FROM demo45
-> WHERE value REGEXP '^John[56]';

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

+----+----------+
| id | value |
+----+----------+
| 1 | John500 |
| 3 | John5500 |
| 4 | John6500 |
+----+----------+
3 rows in set (0.00 sec)

결과 분석

쿼리 결과에서 알 수 있듯이, 정규 표현식 '^John[56]'은 다음과 같이 동작합니다.

  • ^John : value 컬럼 값이 'John'으로 시작해야 합니다.
  • [56] : 'John' 바로 뒤에 오는 문자가 5 또는 6이어야 합니다.

따라서 'John500', 'John5500', 'John6500' 세 개의 레코드만 조회되었고, 뒤에 오는 숫자가 5나 6이 아닌 'John1500'과 'John8600'은 결과에서 제외되었습니다.

마무리

이처럼 MySQL의 REGEXP 연산자를 사용하면 특정 문자열과 숫자 조합으로 시작하는 레코드를 간단하게 필터링할 수 있습니다. 문자 클래스 안에 여러 숫자를 나열하거나 범위(예: [0-9])를 지정하는 방식으로 응용할 수도 있으니, 다양한 패턴 매칭 상황에서 유용하게 활용해 보시기 바랍니다.