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

MySQL 정규식으로 문자열의 숫자 찾는 방법 – REGEXP 패턴 활용 가이드

MySQL에서 문자열 안에 숫자가 포함되어 있는지 확인하려면 REGEXP 연산자와 문자 클래스 패턴을 조합하여 사용할 수 있습니다. MySQL의 정규식은 POSIX 방식을 따르기 때문에 일반적으로 쓰이는 \d 대신 [0-9] 또는 [[:digit:]] 패턴을 사용하는 것이 좋습니다.

기본 문법

특정 컬럼 값에 숫자가 하나라도 포함된 행을 조회하는 기본 문법은 다음과 같습니다.

select * from yourTableName where yourColumnName regexp '[0-9]';

예제 테이블 생성

문법을 이해하기 위해 먼저 테스트용 테이블을 생성해 보겠습니다.

mysql> create table DemoTable1841
    (
    Code varchar(20)
    );
Query OK, 0 rows affected (0.00 sec)

샘플 데이터 삽입

INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다. 숫자가 포함된 값과 그렇지 않은 값을 섞어서 넣습니다.

mysql> insert into DemoTable1841 values('John231');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1841 values('19876Sam');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1841 values('Carol');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1841 values('67474');
Query OK, 1 row affected (0.00 sec)

전체 데이터 확인

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select * from DemoTable1841;

실행 결과는 다음과 같습니다.

+----------+
| Code     |
+----------+
| John231  |
| 19876Sam |
| Carol    |
| 67474    |
+----------+
4 rows in set (0.00 sec)

정규식으로 숫자가 포함된 행 조회하기

이제 문자열에 숫자가 포함된 행만 추출하는 정규식 쿼리를 실행해 보겠습니다.

mysql> select * from DemoTable1841 where Code regexp '[0-9]';

결과를 보면 'Carol'처럼 숫자가 전혀 없는 값은 제외되고, 숫자를 하나라도 포함한 행만 반환됩니다.

+----------+
| Code     |
+----------+
| John231  |
| 19876Sam |
| 67474    |
+----------+
3 rows in set (0.00 sec)

참고: [[:digit:]] 패턴 사용하기

[0-9] 대신 POSIX 문자 클래스인 [[:digit:]]를 사용해도 동일한 결과를 얻을 수 있습니다.

mysql> select * from DemoTable1841 where Code regexp '[[:digit:]]';

두 패턴 모두 문자열 내에 숫자가 최소 한 개라도 존재하는지 검사하므로, 상황에 맞게 편리한 방식을 선택하면 됩니다.