반응형
[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
반응형
'Database > SQL' 카테고리의 다른 글
[Oracle] 숫자 0.5 문자 변환 시 ".5" ? "0.5" 로 표시하기 (0) | 2020.06.20 |
---|---|
[Oracle] 자동증가 SEQUENCE 생성, 조회, 삭제 (0) | 2020.04.08 |
[Oracle] ORA-00904 : 부적합한 식별자 invalid identifier 오류 (1) | 2020.02.17 |
[Oracle] ORA-00054 : 리소스가 사용 중이어서 NOWAIT가 지정되었거나 시간 초과가 만료된 상태로 획득합니다. 오류 (0) | 2020.02.17 |
[Toad] Background session could not connect to Oracle 해결 (0) | 2020.02.12 |
댓글