안녕하세요 게으른 개발잡니다.
외주 진행중 아이디가 이메일이라 보여주기식 고유키값을 만들어서 회원들에게 나눠줄 일이 있어 정보남깁니다.
형식을 영문대문자 + 숫자5자리(ex A10000)로 요청을 하셔서 편하게 시퀀스 생성후 ASCII코드를 이용해 작업했습니다.
아래 코드 보시죠.
Oracle sequence 생성
1
|
CREATE SEQUENCE "시퀀스명" MINVALUE 0 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 6510000 NOCACHE NOORDER NOCYCLE ;
|
cs |
보시다시피 ASCII코드의 대문자 A인 65로 시작하는걸 보실수있습니다.
Java Method 생성
1
2
3
4
5
6
7
8
9
10
|
public static String createSequenceKey(int strNum) {
String r = "";
r=Integer.toString(strNum);
int header = Integer.valueOf(r.substring(0,2));
char result = (char) header;
r = result + r.substring(2);
return r;
}
|
cs |
입력받은 strNum의 앞 2자리를 잘라서 char로 캐스팅 후 숫자와 다시 합쳐서 return해주는 메소드입니다.
해당하는 메소드를 호출하면서 db에서 sequence의 nextval을 불러오시면 신경쓰지않고 편하게 둘 수 있는 고유 키가 완성이 됩니다 ㅎㅎ
만약 AA10000같은 고유키를 만드셔야 한다면, 656510000의 시퀀스를 만드신 후, nextval을 한번 더 체크해서 91(ex;659110000)번이 되었을 경우 sequence alter를 이용해 666510000같은 형태로 변환하여 사용하시면 됩니다.
궁금하신건 댓글 부탁드립니다. 태클 환영합니다.
반응형
'IT' 카테고리의 다른 글
[Java] 반복문을 이용한 소수 찾기 (0) | 2020.11.09 |
---|---|
[JS] GMT기준 현재시간 (0) | 2020.11.02 |
[JAVA] Map을 Json으로 변환 (0) | 2019.06.04 |
[JAVA] 날짜를 입력받아 현재 날짜와 비교 (0) | 2019.05.24 |
[ORACLE] Commit 된 데이터 복구 (TIMESTAMP) (0) | 2019.05.21 |