Database/SQL

[Oracle] LPAD, RPAD 함수 사용하여 공백 채우기 "0 채우기"

헹창 2020. 4. 3.
반응형

[Oracle] LPAD, RPAD 함수 사용하여 공백 채우기 "0 채우기"

 

 

데이터베이스에서 키 값을 자동으로 저장할 때,  SEQ는 SEQUENCE를 사용해서 자동증가가 쉽지만

 

숫자형 문자인 CD00001 과 같은 포맷의 키 값을 1씩 늘려가며 저장할 때 CD를 자르고,

 

MAX값으로 +1을 하여 다시 0을 붙여서 저장해야만 하는가.. 찾아보다가 LPAD/RPAD 함수를 만나게 되었다.

 

 

 

이를 더 쉽게 해줄 함수를 공부해보자.

 

 

 

LPAD 함수 

 

LPAD("값", "총 문자길이", "채움문자")

 

- 지정한 길이만큼 왼쪽부터 특정문자로 채워준다.

 

SELECT 30
     , LPAD(30, 5)
     , LPAD(30, 5, '0')
     , LPAD(30, 5, 'A')
FROM SYS.DUAL

 

- 결과

 

 

채움문자 수= "총 문자길이" - Length("값")

 

채움문자 수 만큼 왼쪽부터 채움문자로 채워지고, 채움문자를 지정하지지 않을 경우는 공백으로 채워진다.

 

 

 

RPAD 함수 

 

RPAD("값", "총 문자길이", "채움문자")

 

- 지정한 길이만큼 오른쪽부터 특정문자로 채워준다.

 

SELECT 30
     , RPAD(30, 5)
     , RPAD(30, 5, '0')
     , RPAD(30, 5, 'A')
FROM SYS.DUAL

 

- 결과

 

 

 

 

예제

 

- 아래와 같은 GROUP 테이블의 다음 GROUP_ID를 저장한다.

 

 

 

1. 숫자형 문자인 ID의 숫자 부분을 잘라준다. 

 

- SUBSTR 함수 사용

SELECT SUBSTR(GROUP_ID, 3) AS GP_ID_1
  FROM WEB_M_GROUP

 

 

 

2. 새로 추가될 ID의 MAX값을 구한다.

 

- MAX 함수 사용

 

SELECT MAX(GP_ID_1) AS GP_ID_2
  FROM WEB_M_GROUP

 

 

이제 이 결과 값을 "값" 으로 LPAD함수를 사용해보자

 

 

 

3. LPAD("값", 5, '0') : 위 값을 5자리 길이 포맷으로 '0'을 왼쪽부터 채운다.

 

- LPAD 함수 사용

 

SELECT LPAD(GP_ID_2, 5, '0') AS GP_ID_3
  FROM WEB_M_GROUP

 

 

4. 마무리로 문자열을 합치자

 

- || 연산자 혹은 CONCAT 함수 사용

 

SELECT 'GP' || GP_ID_3 AS GP_ID_4
  FROM WEB_M_GROUP

 

 

 

 

 

728x90
반응형

댓글

추천 글