MySQL에서 REGEXP로 알파벳순 검색하기
MySQL에서 알파벳 순서로 데이터를 검색하려면 REGEXP(정규 표현식) 연산자를 사용하는 것이 가장 간편합니다. 예를 들어, 이름이 A, B, C로 시작하는 레코드만 조회하고 싶다면 아래와 같은 문법을 사용할 수 있습니다.
SELECT * FROM 테이블명 WHERE 컬럼명 REGEXP '^[ABC]';
여기서 ^[ABC]는 해당 컬럼의 값이 A, B, C 중 하나의 문자로 시작한다는 의미입니다. 캐럿(^) 기호가 문자열의 시작을 나타내며, 대괄호 안의 문자 중 하나와 일치하면 조건에 부합하게 됩니다.
1. 샘플 테이블 생성
먼저 실습용 테이블을 생성해 보겠습니다.
mysql> CREATE TABLE DemoTable
(
Name varchar(100)
);
Query OK, 0 rows affected (0.69 sec)2. 데이터 삽입
INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.
mysql> INSERT INTO DemoTable VALUES('Chris');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable VALUES('David');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable VALUES('Mike');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES('Bob');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES('Mike');
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable VALUES('Adam');
Query OK, 1 row affected (0.14 sec)3. 전체 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> SELECT * FROM DemoTable;
실행 결과는 다음과 같습니다.
+-------+ | Name | +-------+ | Chris | | David | | Mike | | Bob | | Mike | | Adam | +-------+ 6 rows in set (0.00 sec)
4. REGEXP를 이용한 알파벳순 검색 실행
이제 REGEXP를 사용하여 이름이 A, B, C로 시작하는 레코드만 조회하는 쿼리를 실행해 보겠습니다.
mysql> SELECT * FROM DemoTable WHERE Name REGEXP '^[ABC]';
결과를 확인해 보면 조건에 맞는 세 개의 레코드만 반환된 것을 볼 수 있습니다.
+-------+ | Name | +-------+ | Chris | | Bob | | Adam | +-------+ 3 rows in set (0.17 sec)
추가 팁: 대소문자 구분 없이 검색하기
MySQL의 기본 콜레이션(collation)은 일반적으로 대소문자를 구분하지 않기 때문에 '^[abc]'처럼 소문자로 작성해도 동일한 결과를 얻을 수 있습니다. 만약 대소문자를 엄격하게 구분하고 싶다면 BINARY 키워드를 함께 사용하면 됩니다.
SELECT * FROM DemoTable WHERE Name REGEXP BINARY '^[ABC]';
또한 문자 범위를 지정하고 싶다면 하이픈(-)을 활용할 수 있습니다. 예를 들어 '^[A-M]'은 A부터 M까지의 알파벳으로 시작하는 모든 레코드를 조회합니다.