MySQL에서 LPAD() 함수를 사용하면 값의 왼쪽에 특정 문자를 채워 원하는 길이로 맞출 수 있습니다. 이 글에서는 조건에 맞는 여러 행을 한 번에 업데이트하면서 왼쪽 패딩을 적용하는 방법을 예제와 함께 살펴보겠습니다.
1. 테이블 생성
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
-> (
-> Number int
-> );
Query OK, 0 rows affected (2.26 sec)
2. 데이터 삽입
insert 명령을 사용하여 테이블에 샘플 레코드를 삽입합니다.
mysql> insert into DemoTable values(857786);
Query OK, 1 row affected (0.26 sec)
mysql> insert into DemoTable values(89696);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values(89049443);
Query OK, 1 row affected (0.25 sec)
3. 데이터 확인
select 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
출력 결과
+----------+
| Number |
+----------+
| 857786 |
| 89696 |
| 89049443 |
+----------+
3 rows in set (0.00 sec)
4. 여러 행 업데이트 및 왼쪽 패딩 적용
다음은 길이가 7자 미만인 값들만 골라서 왼쪽에 '9'를 채워 7자리로 만드는 UPDATE 쿼리입니다.
mysql> update DemoTable set Number=LPAD(Number, 7, "9") where length(Number) < 7;
Query OK, 2 rows affected (0.40 sec)
Rows matched: 2 Changed: 2 Warnings: 0
쿼리 동작 방식:
- LPAD(Number, 7, "9") — Number 값을 전체 길이가 7자리가 될 때까지 왼쪽에 '9'를 채웁니다.
- where length(Number) < 7 — 이미 7자리 이상인 값은 그대로 유지하고, 7자리 미만인 행만 업데이트 대상으로 제한합니다.
5. 결과 확인
업데이트 후 테이블을 다시 한번 조회해 보겠습니다.
mysql> select *from DemoTable;
출력 결과
+----------+
| Number |
+----------+
| 9857786 |
| 9989696 |
| 89049443 |
+----------+
3 rows in set (0.00 sec)
실행 결과를 보면, 기존에 7자리 미만이었던 857786과 89696이 각각 9857786, 9989696으로 변환되어 왼쪽에 '9'가 채워진 것을 확인할 수 있습니다. 반면 이미 8자리였던 89049443은 WHERE 조건에 해당하지 않기 때문에 변경되지 않고 그대로 유지됩니다.