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

MySQL에서 하이픈(-)으로 구분된 0 패딩 처리하기

MySQL에서 숫자 데이터 앞에 하이픈(-)으로 구분된 0(zero padding)을 붙여야 하는 경우가 종종 있습니다. 예를 들어 일련번호를 '000-100'과 같은 형식으로 표시하고 싶을 때가 그렇습니다. 이 글에서는 CONCAT() 함수와 RIGHT() 함수를 조합하여 이러한 형식을 손쉽게 만드는 방법을 알아보겠습니다.

1. 예제 테이블 생성하기

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

mysql> create table DemoTable829(SerialNumber int);
Query OK, 0 rows affected (0.64 sec)

2. 샘플 데이터 삽입하기

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

mysql> insert into DemoTable829 values(100);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable829 values(101);
Query OK, 1 row affected (0.26 sec)
mysql> insert into DemoTable829 values(102);
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable829 values(103);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable829 values(104);
Query OK, 1 row affected (0.60 sec)

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

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

mysql> select *from DemoTable829;

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

+--------------+
| SerialNumber |
+--------------+
|          100 |
|          101 |
|          102 |
|          103 |
|          104 |
+--------------+
5 rows in set (0.00 sec)

4. 하이픈으로 구분된 0 패딩 적용하기

이제 핵심인 쿼리입니다. CONCAT()으로 접두어 '000-'을 붙인 뒤, RIGHT() 함수로 오른쪽 7자리만 잘라내면 원하는 형식이 완성됩니다.

mysql> select RIGHT(CONCAT('000-', SerialNumber), 7) from DemoTable829;

결과는 아래와 같습니다.

+----------------------------------------+
| RIGHT(CONCAT('000-', SerialNumber), 7) |
+----------------------------------------+
| 000-100                                |
| 000-101                                |
| 000-102                                |
| 000-103                                |
| 000-104                                |
+----------------------------------------+
5 rows in set (0.00 sec)

동작 원리

이 방식은 두 단계로 동작합니다.

CONCAT('000-', SerialNumber) → 문자열 '000-100'처럼 접두어가 붙은 값을 생성합니다.
RIGHT(..., 7) → 전체 문자열에서 오른쪽 7글자만 추출하여 고정된 길이의 결과를 보장합니다.

참고: LPAD()를 활용한 대안

하이픈 없이 단순히 앞자리를 0으로 채우고 싶다면 LPAD() 함수를 사용하는 것이 더 간단합니다.

mysql> select LPAD(SerialNumber, 6, '0') from DemoTable829;
-- 결과: 000100, 000101, ...

또한 하이픈 위치가 고정되어 있다면 위의 RIGHT(CONCAT(...)) 방식이 유용하고, 자릿수가 가변적인 데이터라면 INSERT()SUBSTRING() 등을 조합해 응용할 수 있습니다.