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

MySQL에서 첫 번째 숫자를 제외하고 열 값의 나머지 숫자를 모두 0으로 바꾸는 방법

네, 가능합니다. CONCAT, LEFT, REPEAT, CHAR_LENGTH 함수를 조합하면 첫 번째 숫자는 그대로 유지하면서 나머지 모든 숫자를 0으로 바꿀 수 있습니다.

먼저 예제 테이블을 생성해 보겠습니다.

mysql> create table DemoTable744 (Number varchar(100));
Query OK, 0 rows affected (0.47 sec)

샘플 데이터 삽입하기

insert 명령을 사용하여 테이블에 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable744 values('537737736252');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable744 values('989000099999');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable744 values('343225666666664533');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable744 values('4322111899494');
Query OK, 1 row affected (0.15 sec)

테이블 데이터 확인하기

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

mysql> select *from DemoTable744;

위 쿼리는 다음과 같은 결과를 출력합니다.

+--------------------+
| Number             |
+--------------------+
| 537737736252       |
| 989000099999       |
| 343225666666664533 |
| 4322111899494      |
+--------------------+
4 rows in set (0.00 sec)

첫 자리 숫자만 남기고 나머지를 0으로 변환하는 쿼리

다음은 첫 번째 숫자를 제외한 나머지 숫자를 모두 0으로 바꾸는 쿼리입니다.

mysql> select CONCAT(LEFT(Number, 1), REPEAT('0', CHAR_LENGTH(Number) - 1)) 
   AS AfterAddingZero from DemoTable744;

실행 결과는 아래와 같습니다.

+--------------------+
| AfterAddingZero    |
+--------------------+
| 500000000000       |
| 900000000000       |
| 300000000000000000 |
| 4000000000000      |
+--------------------+
4 rows in set (0.06 sec)

쿼리 동작 원리

이 쿼리가 작동하는 방식을 단계별로 살펴보면 다음과 같습니다.

LEFT(Number, 1): 문자열에서 맨 앞의 한 글자만 추출하여 원래 첫 자리 숫자를 그대로 유지합니다.
CHAR_LENGTH(Number) - 1: 전체 문자열 길이에서 1을 뺀 값, 즉 0으로 채워야 할 자릿수를 계산합니다.
REPEAT('0', n): 계산된 자릿수만큼 '0'을 반복 생성합니다.
CONCAT(...): 추출한 첫 자리 숫자와 반복된 0들을 하나의 문자열로 연결합니다.

이 방법은 데이터 타입이 varchar인 경우에도 안전하게 동작하며, 자릿수가 서로 다른 값들이 섞여 있어도 각 행의 길이에 맞춰 정확하게 처리됩니다.