oracle의 to_char 함수를 이용해서 2자리 숫자를 8자리(혹은 그 이상)으로 만드는 방법
1. 문제 :회사원의 사번과 오늘 날짜와 시퀀스값(여기선 강제로 11로 함)을 조합하여 총 length가 20인 고유번호를 만들기로 했다.
- 쿼리를 아래와 같이 만들었다.
select 'EMP001'||'-'||TO_CHAR(SYSDATE,'YYMMDD')||TO_CHAR('11','00000000') as t from dual
- 실행을 해보니 결과값이 아래와 같았다.
EMP001-121109 00000011
- 121109 이후에 공백이 생겼다... 왜 그럴까?
2.해결법
- to_char의 속성상 공백부분은 + 또는 -의 부호값이 들어가는 부분이란다. 그때는 FM을 써서 포매팅 해주면 된다.
- (실 값이 시퀀스값이기 때문에 음수는 나올수 없으므로 8자리의 숫자형으로 답이 나온다.)
- select 'EMP001'||'-'||TO_CHAR(SYSDATE,'YYMMDD')||TO_CHAR('11','FM00000000') as t from dual
출처: http://blog.naver.com/ambion?Redirect=Log&logNo=50154343338
반응형
'Database > DB' 카테고리의 다른 글
[SQL] WHERE 1=1 하는 이유 (0) | 2014.04.07 |
---|---|
오라클 - 모든 시퀀스 조회 (0) | 2014.03.28 |
Oracle 자동증분 Sequence와 max(seq)+1의 차이 (0) | 2014.03.28 |
Oracle DECODE 함수 사용 방법 (2) | 2014.02.05 |
db와 jdbc 관련자료 / 오라클(oracle) 설치 (0) | 2013.08.29 |