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

MySQL에서 하이픈으로 구분된 열 값의 중간 부분을 추출해 새 열에 저장하는 방법

MySQL에서 하이픈(-)으로 구분된 열 값의 중간 부분을 추출하려면 SUBSTR() 함수를 사용하면 됩니다. 예를 들어 "11-84848-11"과 같은 값에서 가운데 숫자 부분만 뽑아내는 방법을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
-> (
-> Number varchar(100),
-> Number1 varchar(100)
-> );
Query OK, 0 rows affected (0.56 sec)

2. 데이터 삽입하기

INSERT 명령을 사용해 하이픈으로 구분된 값을 가진 레코드를 삽입합니다.

mysql> insert into DemoTable(Number) values('11-84848-11');
Query OK, 1 row affected (0.15 sec)

mysql> insert into DemoTable(Number) values('22-99999-22');
Query OK, 1 row affected (0.13 sec)

3. 전체 레코드 조회하기

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

mysql> select *from DemoTable;

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

+-------------+---------+
| Number | Number1 |
+-------------+---------+
| 11-84848-11 | NULL |
| 22-99999-22 | NULL |
+-------------+---------+
2 rows in set (0.00 sec)

4. SUBSTR()로 중간 부분 추출하기

이제 UPDATE 문과 SUBSTR() 함수를 조합해 열 값의 중간 부분을 추출하여 새로운 열(Number1)에 저장합니다.

mysql> update DemoTable
-> set Number1=SUBSTR(Number,4,5);
Query OK, 2 rows affected (0.19 sec)
Rows matched: 2 Changed: 2 Warnings: 0

여기서 SUBSTR(Number, 4, 5)의 의미를 살펴보면, 첫 번째 인자는 대상 문자열, 두 번째 인자인 4는 추출을 시작할 위치(문자열은 1부터 시작), 세 번째 인자인 5는 추출할 문자의 개수입니다. 즉, "11-84848-11"에서 네 번째 문자부터 다섯 글자를 읽어 "84848"을 얻게 됩니다.

5. 결과 확인하기

업데이트 후 테이블을 다시 조회해 보겠습니다.

mysql> select *from DemoTable;

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

+-------------+---------+
| Number | Number1 |
+-------------+---------+
| 11-84848-11 | 84848 |
| 22-99999-22 | 99999 |
+-------------+---------+
2 rows in set (0.00 sec)

위 결과를 보면 Number 열의 하이픈 사이에 있던 중간 숫자들이 Number1 열에 성공적으로 추출되어 저장된 것을 확인할 수 있습니다.

참고: SUBSTRING() 함수와의 관계

MySQL에서 SUBSTR()은 SUBSTRING()의 동의어(synonym)로, 두 함수는 완전히 동일하게 동작합니다. 또한 위치가 음수일 경우 문자열 끝부터 거꾸로 계산하므로, 데이터 형식에 따라 유연하게 활용할 수 있습니다.