MySQL에서 우편번호 앞에 0 채우기
데이터베이스에서 우편번호를 다룰 때, 숫자형으로 저장된 값의 앞자리에 0을 붙여야 하는 경우가 자주 발생합니다. 예를 들어 '23455'라는 우편번호를 6자리 표준 형식인 '023455'로 변환해야 할 수 있습니다.
MySQL에서는 LPAD() 함수를 사용하면 이러한 작업을 간단하게 처리할 수 있습니다. 기본 문법은 다음과 같습니다.
SELECT LPAD(컬럼명, 컬럼폭+1, '0') AS 별칭 FROM 테이블명;
LPAD() 함수는 첫 번째 인수로 대상 문자열, 두 번째 인수로 최종 길이, 세 번째 인수로 채울 문자를 받습니다. 이를 통해 지정된 길이만큼 문자열의 왼쪽(앞)을 특정 문자로 채울 수 있습니다.
예제 테이블 생성하기
LPAD() 함수의 개념을 실제로 이해하기 위해, 우편번호 컬럼을 포함하는 테이블을 먼저 생성해 보겠습니다. 아래는 테이블 생성 쿼리입니다.
mysql> create table ZipCodePadWithZeroDemo
-> (
-> Name varchar(200),
-> YourZipCode int(6)
-> );
Query OK, 0 rows affected (0.44 sec)샘플 데이터 삽입하기
테이블 생성이 완료되면 테스트용 데이터를 삽입합니다. 레코드 삽입 쿼리는 다음과 같습니다.
mysql> insert into ZipCodePadWithZeroDemo values('John',23455);
Query OK, 1 row affected (0.13 sec)
mysql> insert into ZipCodePadWithZeroDemo values('Carol',46523);
Query OK, 1 row affected (0.62 sec)
mysql> insert into ZipCodePadWithZeroDemo values('Johnson',12345);
Query OK, 1 row affected (0.11 sec)
mysql> insert into ZipCodePadWithZeroDemo values('David',34567);
Query OK, 1 row affected (0.18 sec)저장된 데이터 확인하기
테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> select *from ZipCodePadWithZeroDemo;
실행 결과는 다음과 같습니다.
+---------+-------------+ | Name | YourZipCode | +---------+-------------+ | John | 23455 | | Carol | 46523 | | Johnson | 12345 | | David | 34567 | +---------+-------------+ 4 rows in set (0.00 sec)
현재 우편번호가 5자리 숫자로 저장되어 있는 것을 확인할 수 있습니다.
LPAD() 함수 적용하기
이제 앞서 소개한 문법을 적용하여 우편번호 앞에 0을 채워 보겠습니다. 쿼리는 다음과 같습니다.
mysql> SELECT LPAD(YourZipCode, 6, '0') as UPDATEDZIPCODE from ZipCodePadWithZeroDemo;
이름과 함께 조회하고 싶다면 SELECT 절에 Name 컬럼을 추가하면 됩니다.
mysql> SELECT Name,LPAD(YourZipCode, 6, '0') as UPDATEDZIPCODE from ZipCodePadWithZeroDemo;
아래 출력 결과에서 이름과 함께 0으로 채워진 우편번호를 확인할 수 있습니다.
+---------+----------------+ | Name | UPDATEDZIPCODE | +---------+----------------+ | John | 023455 | | Carol | 046523 | | Johnson | 012345 | | David | 034567 | +---------+----------------+ 4 rows in set (0.00 sec)
추가 팁: RPAD()와의 차이점
LPAD()가 문자열의 왼쪽을 채우는 함수라면, 반대로 오른쪽을 채워야 할 때는 RPAD() 함수를 사용합니다. 또한, 우편번호처럼 항상 고정된 형식이 필요한 데이터라면 테이블 설계 단계부터 INT가 아닌 CHAR나 VARCHAR 타입으로 선언하고, 제로 패딩이 필요 없도록 관리하는 것이 좋은 방법입니다. 이렇게 하면 매번 조회 시 변환 작업을 거치지 않아도 되고, 인덱스 성능 면에서도 유리합니다.