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

MySQL에서 첫 번째 문자가 0~9 사이의 숫자인 행만 선택하는 방법

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() 함수를 사용하는 것도 좋은 방법입니다. 두 방식 모두 동일한 정규 표현식 패턴을 지원합니다.