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

MySQL에서 앞자리 0이 채워진 값 자동 삽입하기 – LPAD() 함수 활용법

MySQL 테이블에 001, 002처럼 앞자리가 0으로 채워진 값을 저장하고 싶다면 INSERT INTO ... SELECT 문LPAD() 함수를 함께 사용하면 됩니다. LPAD()는 문자열의 왼쪽을 지정한 문자로 채워 원하는 길이만큼 맞춰 주는 함수로, 일련번호 형태의 데이터를 만들 때 매우 유용합니다.

1단계: 테이블 생성

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

mysql> create table DemoTable1967
    (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserId varchar(20)
    );
Query OK, 0 rows affected (0.00 sec)

2단계: LPAD()를 활용한 데이터 삽입

insert 명령어를 사용해 레코드를 삽입합니다. 이때 LPAD()COALESCE()를 조합하면 기존 최대 Id 값에 1을 더한 숫자를 3자리로 맞추고, 부족한 자릿수를 앞쪽에 '0'으로 채울 수 있습니다.

mysql> insert into DemoTable1967(UserId)
    select LPAD(COALESCE(MAX(id), 0) + 1, 3, '0') from DemoTable1967;
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0
mysql> insert into DemoTable1967(UserId)
    select LPAD(COALESCE(MAX(id), 0) + 1, 3, '0') from DemoTable1967;
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0
mysql> insert into DemoTable1967(UserId)
    select LPAD(COALESCE(MAX(id), 0) + 1, 3, '0') from DemoTable1967;
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

위와 같은 구문을 반복해서 실행하면 001, 002, 003처럼 순차적으로 값이 자동 생성되어 삽입됩니다.

3단계: 결과 확인

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

mysql> select * from DemoTable1967;

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

+----+--------+
| Id | UserId |
+----+--------+
|  1 | 001    |
|  2 | 002    |
|  3 | 003    |
+----+--------+
3 rows in set (0.00 sec)

핵심 함수 정리

LPAD(문자열, 길이, 채움 문자): 문자열 왼쪽을 지정한 문자로 채워 전체 길이를 맞춥니다. 예를 들어 LPAD('1', 3, '0')'001'을 반환합니다.

COALESCE(값1, 값2, ...): 인수 중 NULL이 아닌 첫 번째 값을 반환합니다. 테이블이 비어 있어 MAX(id)가 NULL일 때 0을 대신 사용하도록 처리하는 역할을 합니다.

이 두 함수를 조합하면 테이블에 데이터가 없는 초기 상태에서도 오류 없이 안전하게 앞자리 0이 붙은 일련번호를 생성할 수 있습니다.