숫자로 시작하는 문자열을 찾으려면 정규 표현식(Regular Expression)을 활용하는 것이 가장 간단하고 효과적입니다. MySQL에서는 REGEXP 연산자와 함께 ^(문자열 시작) 앵커를 사용하면 원하는 조건의 데이터를 손쉽게 필터링할 수 있습니다.
1. 샘플 테이블 생성
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable ( Id varchar(200) ); Query OK, 0 rows affected (0.59 sec)
2. 테스트 데이터 삽입
INSERT 문을 이용해 다양한 형태의 문자열을 입력합니다. 숫자로 시작하는 값뿐 아니라 특수문자나 알파벳으로 시작하는 값도 함께 넣어 비교해 보겠습니다.
mysql> insert into DemoTable values('123User');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values('_$123User');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values('User123456');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('0000User');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values('&^*User');
Query OK, 1 row affected (0.24 sec)3. 전체 데이터 확인
SELECT 문으로 테이블에 저장된 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+------------+ | Id | +------------+ | 123User | | _$123User | | User123456 | | 0000User | | &^*User | +------------+ 5 rows in set (0.00 sec)
4. REGEXP로 숫자로 시작하는 문자열 조회하기
핵심은 '^[0-9]' 패턴입니다. 여기서 ^는 문자열의 시작을 의미하고, [0-9]는 첫 번째 문자가 0부터 9 사이의 숫자여야 한다는 조건을 나타냅니다. DISTINCT를 함께 사용하면 중복 없이 깔끔한 결과를 얻을 수 있습니다.
mysql> SELECT DISTINCT Id FROM DemoTable WHERE Id REGEXP '^[0-9]';
위 쿼리의 실행 결과는 다음과 같습니다.
+----------+ | Id | +----------+ | 123User | | 0000User | +----------+ 2 rows in set (0.58 sec)
결과 분석
결과를 보면 '123User'와 '0000User', 즉 숫자로 시작하는 두 개의 레코드만 반환된 것을 확인할 수 있습니다. 반면 '_$123User'처럼 밑줄과 특수문자로 시작하거나 '&^*User'처럼 특수기호로 시작하는 문자열은 조건에 맞지 않아 자동으로 제외됩니다. 또한 'User123456'은 중간에 숫자가 포함되어 있지만 시작 문자가 알파벳이므로 역시 조회되지 않습니다.
이처럼 MySQL의 REGEXP 연산자를 사용하면 별도의 함수나 복잡한 로직 없이도 문자열의 시작 패턴을 간단하게 검증할 수 있으며, 필요에 따라 '^[a-zA-Z]'(영문자로 시작), '^[^0-9]'(숫자가 아닌 문자로 시작) 등 다양한 패턴으로 응용할 수 있습니다.