본문 바로가기
개발/오라클

오라클 - 문자열을 자릿수만큼 채워주는 LPAD(), RPAD() 함수

by 루 프란체 2018. 4. 14.

DB 작업을 하다보면 가끔이지만 자릿수를 채워야 할 일이 생긴다.


예를 들자면 회원가입 시, 혹은 물품의 일련번호 기입시 순번이라거나 년도 + 시퀀스로 회원 번호를 만들거나 하는 경우인데 

가끔 정말 무식한 방법으로 프로그램을 짠 곳을 보면 길이 체크를 해서 IF문으로 일일이 0, 00 등을 붙이는 곳이 있는데... 

이건 정말 아니라고 본다.


하여튼 이럴 때는 오라클에서 제공하는 LPAD, RPAD 함수를 사용하면 되는데 

이 함수들은 지정한 자릿수만큼 부족한 글자를 채워주는 기능을 한다. 


사용법은 매우 간단하다.

LPAD('컬럼 또는 문자열', 길이, '문자')

RPAD('컬럼 또는 문자열', 길이, '문자')

SELECT LPAD('1', 5, '0'), LPAD('11', 5, '0') FROM DUAL;
SELECT RPAD('1', 5, '0'), RPAD('11', 5, '0') FROM DUAL;
---------------------------------------------------------
RESULT : 00001, 00011
RESULT : 10000, 11000

위의 결과에서 보이듯이 LPAD 는 자릿수가 부족한 만큼 왼쪽으로 글자를 채워주고

RPAD 는 자릿수가 부족한 만큼 오른쪽으로 글자를 채워준다. 


뭔가 이대로 끝내기에는 엄청나게 허전하니까 위에 예시를 들었던대로 년도 + 시퀀스로 회원 번호를 만드는 방법도 알아보자.

DROP SEQUENCE SEQ_2018_04_14_LPAD_RPAD;

CREATE SEQUENCE SEQ_2018_04_14_LPAD_RPAD
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 99999
NOCACHE
;

SELECT	TO_CHAR(SYSDATE, 'YY') || LPAD(SEQ_2018_04_14_LPAD_RPAD.NEXTVAL, 5, '0') 
FROM	DUAL;


댓글