MySQL에서 특정 컬럼의 값이 숫자(0~9)로 시작하는 행만 조회하고 싶다면 RLIKE 연산자와 정규 표현식을 활용하면 됩니다.
기본 문법
컬럼 값의 첫 번째 문자가 0부터 9 사이의 숫자인 행만 선택하려면 아래와 같은 문법을 사용합니다.
select * from yourTableName where yourColumnName RLIKE '^[0-9]+'
여기서 ^는 문자열의 시작을 의미하고, [0-9]+는 0~9 사이의 숫자가 하나 이상 연속으로 나타남을 뜻합니다.
예제 테이블 생성
먼저 실습에 사용할 테이블을 만들어 보겠습니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
QuestionNumber varchar(200)
);
Query OK, 0 rows affected (0.56 sec)데이터 삽입
insert 명령어를 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable(QuestionNumber) values('1Question');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable(QuestionNumber) values('Question2');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(QuestionNumber) values('311Question');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(QuestionNumber) values('45Question');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(QuestionNumber) values('Question10');
Query OK, 1 row affected (0.13 sec)전체 데이터 확인
select 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----+----------------+ | Id | QuestionNumber | +----+----------------+ | 1 | 1Question | | 2 | Question2 | | 3 | 311Question | | 4 | 45Question | | 5 | Question10 | +----+----------------+ 5 rows in set (0.00 sec)
숫자로 시작하는 행만 조회하기
이제 RLIKE '^[0-9]+' 조건을 사용하여 첫 번째 문자가 0~9 사이 숫자인 행만 선택하는 쿼리를 실행합니다.
mysql> select *from DemoTable where QuestionNumber RLIKE '^[0-9]+';
결과는 다음과 같습니다.
+----+----------------+ | Id | QuestionNumber | +----+----------------+ | 1 | 1Question | | 3 | 311Question | | 4 | 45Question | +----+----------------+ 3 rows in set (0.03 sec)
결과 분석
출력 결과를 보면 '1Question', '311Question', '45Question'처럼 숫자로 시작하는 값만 조회된 것을 확인할 수 있습니다. 반면 'Question2'나 'Question10'처럼 알파벳으로 시작하는 행은 정규 표현식 조건에 맞지 않아 제외되었습니다.
참고로 MySQL 8.0 이상에서는 RLIKE 대신 표준인 REGEXP_LIKE() 함수를 사용하는 것도 좋은 방법입니다. 두 방식 모두 동일한 정규 표현식 패턴을 지원합니다.