DB

[MySQL] 문자열 패딩 함수: LPAD, RPAD 예제 중심 정리

인생아 2025. 7. 19. 14:45
반응형

LPAD()와 RPAD()는 문자열의 왼쪽이나 오른쪽에 지정한 문자로 길이를 맞춰주는 함수이다.
코드 포맷 정리, 자리수 고정, 시리얼 번호 출력 등 실무에서 자주 쓰인다.

🔷 LPAD(str, length, pad_str): 왼쪽 패딩

문법

LPAD(원본문자열, 원하는총길이, 채울문자)

왼쪽에 pad_str를 반복해서 붙여 전체 길이를 length로 맞춘다.

예제

SELECT LPAD('25', 5, '0');      -- 결과: '00025'
SELECT LPAD('abc', 6, '*');     -- 결과: '***abc'

실무 예제

-- 고객 ID를 6자리로 맞추기
SELECT LPAD(customer_id, 6, '0') AS padded_id FROM customers;
-- 숫자를 출력용 코드로 변환 (예: 7 → A00007)
SELECT CONCAT('A', LPAD(num, 5, '0')) AS code FROM serials;
반응형

🔸 RPAD(str, length, pad_str): 오른쪽 패딩

문법

RPAD(원본문자열, 원하는총길이, 채울문자)

오른쪽에 pad_str를 반복해서 붙인다. 고정 너비 포맷, 보고서 출력 등에서 자주 사용된다.

예제

SELECT RPAD('abc', 6, '.');     -- 결과: 'abc...'
SELECT RPAD('2025', 8, '0');    -- 결과: '20250000'

실무 예제

-- 이름 필드를 고정 길이로 출력
SELECT RPAD(name, 10, ' ') AS fixed_name FROM users;
-- 메시지를 일정 길이로 포맷
SELECT RPAD(message, 20, '_') AS padded_msg FROM logs;

🧠 LPAD vs RPAD 비교 요약

함수명 방향 사용 예시 주 용도
LPAD 왼쪽 LPAD('7', 3, '0') → '007' 코드, 번호 포맷 고정
RPAD 오른쪽 RPAD('abc', 5, '.') → 'abc..' 보고서 출력 정렬, 고정 폭

⚠️ 주의사항

  • pad_str은 하나의 문자 이상 가능하지만, 지정한 length를 초과하면 자르고 끝냄
  • 원래 문자열 길이가 length 이상이면 패딩 없이 원본 그대로 반환
  • NULL 입력 시 결과는 NULL

예외 상황

SELECT LPAD('abc', 2, '-'); -- 결과: 'abc' (길이 줄이지 않음, 원본 그대로)
SELECT LPAD(NULL, 5, 'x');  -- 결과: NULL
반응형

💡 실무 활용 꿀팁

1. 고정 폭 텍스트 파일 생성 시

SELECT 
  RPAD(name, 10, ' ') AS name,
  LPAD(score, 5, '0') AS score
FROM students;

2. 시리얼 넘버 출력

SELECT CONCAT('S', LPAD(id, 6, '0')) AS serial_no
FROM products;

3. HTML 보고서용 문자열 정렬

SELECT CONCAT('<td>', RPAD(title, 20, '&nbsp;'), '</td>') FROM posts;

패딩 함수는 단순해 보이지만, 정형화된 출력이 필요한 모든 곳에서 필수 도구이다.

🔗 참고 공식 문서
https://dev.mysql.com/doc/refman/8.0/en/string-functions.html

 

반응형