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

MySQL에서 우편번호 앞에 0을 채우는 방법 – LPAD() 함수 완벽 가이드

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 타입으로 선언하고, 제로 패딩이 필요 없도록 관리하는 것이 좋은 방법입니다. 이렇게 하면 매번 조회 시 변환 작업을 거치지 않아도 되고, 인덱스 성능 면에서도 유리합니다.