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

MySQL에서 문자열의 첫 번째 문자를 제거하고 남은 숫자의 합계 구하기

데이터베이스 작업을 하다 보면 문자열 컬럼 값이 알파벳 한 글자로 시작하고 그 뒤에 숫자가 이어지는 형태를 자주 만나게 됩니다. 예를 들어 다음과 같은 값들이 있다고 가정해 보겠습니다.

J230
A130s
C13

이런 경우 각 문자열에서 첫 번째 문자를 제거한 뒤, 남은 숫자 부분만 추출하여 전체 합계를 구해야 합니다. MySQL에서는 SUBSTRING() 함수와 SUM() 함수를 함께 사용하면 손쉽게 해결할 수 있습니다.

1. 테이블 생성하기

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

mysql> create table DemoTable761 (Price varchar(100));
Query OK, 0 rows affected (0.62 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용하여 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable761 values('J230');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable761 values('A130');
Query OK, 1 row affected (0.70 sec)
mysql> insert into DemoTable761 values('C13');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable761 values('D456');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable761 values('B6');
Query OK, 1 row affected (0.13 sec)

3. 저장된 데이터 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable761;

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

+-------+
| Price |
+-------+
| J230  |
| A130  |
| C13   |
| D456  |
| B6    |
+-------+
5 rows in set (0.00 sec)

4. 첫 번째 문자를 제거한 숫자의 합계 구하기

문자열에서 첫 번째 문자를 제거하고 나머지 숫자들의 합계를 구하는 쿼리는 다음과 같습니다.

mysql> select sum(substring(Price,2)) from DemoTable761;

SUBSTRING(Price, 2)는 두 번째 위치부터 문자열 끝까지를 반환하므로, 맨 앞의 알파벳 한 글자가 제거된 숫자 부분만 추출됩니다. MySQL은 이 값을 자동으로 숫자로 변환하여 SUM() 함수로 합산합니다.

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

+-------------------------+
| sum(substring(Price,2)) |
+-------------------------+
|                     835 |
+-------------------------+
1 row in set (0.00 sec)

결과 분석

각 레코드에서 첫 글자를 제거하면 230, 130, 13, 456, 6이 되고, 이를 모두 더하면 835가 됩니다. 이처럼 SUBSTRING()과 SUM()의 조합은 접두사가 붙은 숫자 데이터(예: 상품 코드, 주문 번호 등)의 총합을 계산할 때 매우 유용하게 활용할 수 있습니다.