1. LPAD 함수란?
LPAD 함수는 지정한 길이만큼 문자열의 왼쪽(Left)에 특정 문자를 채워 문자열을 맞춰주는 Oracle 내장 함수입니다.
LPAD(string, length, pad_string)
- string: 원본 문자열
- length: 결과 문자열의 전체 길이
- pad_string: 왼쪽에 채울 문자열 (생략 시 공백)
2. 기본 사용 예제
SELECT LPAD('123', 5, '0') FROM dual;
-- 결과: '00123'
SELECT LPAD('oracle', 10, '*') FROM dual;
-- 결과: '****oracle'
SELECT LPAD('ABC', 6) FROM dual;
-- 결과: ' ABC' (기본 공백)
3. LPAD의 주요 활용 사례
1) 숫자 포맷 정리
숫자 앞에 0을 붙여 고정 자릿수로 표현
SELECT LPAD(TO_CHAR(emp_id), 6, '0') AS emp_code
FROM employees;
2) 고정 포맷 보고서 출력
SELECT LPAD(name, 20, ' ') || LPAD(salary, 10, ' ') AS report_line
FROM staff;
3) 문자열 정렬 및 코드 생성
SELECT LPAD(product_id, 8, 'X') AS padded_id
FROM inventory;
4. 실무 활용 팁
- LPAD는 보고서 출력 시 매우 유용
- 좌측 정렬을 필요로 하는 문자열 생성 시 효과적
- 정렬 기준이 되는 문자열을 맞춰야 할 때 필수
5. RPAD와의 차이점
- LPAD: 문자열의 왼쪽에 채움
- RPAD: 문자열의 오른쪽에 채움
SELECT LPAD('A', 5, '-') AS left_padded,
RPAD('A', 5, '-') AS right_padded
FROM dual;
-- 결과: '----A', 'A----'
6. 특이 케이스 및 주의사항
- 지정 길이보다 원본 문자열이 길면 잘려나감
- pad_string이 여러 문자일 경우 반복하여 채움
SELECT LPAD('123456789', 5, '*') FROM dual;
-- 결과: '12345' (잘림)
SELECT LPAD('A', 6, 'xyz') FROM dual;
-- 결과: 'xyzxyA'
7. 성능 및 인덱스 팁
LPAD는 가공 함수이므로 WHERE 절에서 사용 시 인덱스를 타지 않음. 함수 기반 인덱스 활용 권장.
CREATE INDEX idx_lpad_code ON users(LPAD(user_code, 10, '0'));
8. 결론
LPAD 함수는 포맷팅, 보고서 출력, 코드 정렬 등 다양한 상황에서 활용도가 높은 유틸리티 함수입니다. RPAD와 함께 사용하면 정렬 및 시각적 데이터 품질 향상에 매우 유리합니다.