by 윤 [SQL Query] Oracle SELECT NUMBERING 채번 [2022.01.28 10:15:37]
채번하는 시스템을 개선해야하는 상황이 생겨서 고민중에 좋은 방안이 생각나지 않아 질문 올려봅니다
채번할 숫자의 길이는 4자리로 고정됩니다.
0000, 0001, 0002, 0003, ... , 2000, 2001, ..., 9999, A000, A001, ... , Z999, AA00, AA01, AA02, ..., ZZZZ를 만들고 싶은데 아이디어가 떠오르지 않아 문제를 해결할 수 없어 도움을 요청합니다.
이걸 select ... from dual을 통해서 구할수 있는 방법이 있을까요ㅠㅠ
목적이 뭔가요?
- 0000 ~ ZZZZ 까지 전체를 한번에 조회하고자 하는 건가요?
- 새로운 자료가 입력될 때 하나의 값을 채번하려는 건가요?
예를들어 한번에 30000건의 데이터가 들어오면
30000건의 row를 읽어들이면서 한번에 1번째부터 30000번째까지 번호를 붙이고 싶은것 입니다
음.... 조금 사견이지만...
0000, 0001 .... 0009, 000A, 000B .... 000Z, 0010, 0011, .... 이런식의 채번이 논리에 맞는듯 합니다.
음... 개발 요청하신 분께 한번 문의는 해봐야겠네요ㅠ
인조 식별자로 사용하실경우는 number type으로 만드시길 권장드립니다
오라클은 시퀀스를 사용하시면 됩니다.
다른 db도 유사하게 제공되는 방법이 있을겁니다
순번과, 원하는 형태의 SEQ 항목으로 구성된
채번용 테이블을 하나 만들어 두고 사용하시면 될 것 같습니다.
다만, 지금 적으신 순서는 조금 안맞는게.
Z999 다음이 AA00 인데? 정렬을 해보면 AA00 이 Z999 보다 먼저 나옵니다.
따라서 원하는 순서대로 정렬이 안되게 됩니다.
우주민님 답변 참고하시는게 어떨런지...