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

MySQL REGEXP를 활용한 알파벳순(A~C) 검색 쿼리 작성법

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까지의 알파벳으로 시작하는 모든 레코드를 조회합니다.