database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 40290 게시물 읽기
No. 40290
일련번호를 부여하려 합니다.
작성자
양충식(sikyc)
작성일
2013-10-25 07:13ⓒ
2013-10-25 07:38ⓜ
조회수
6,968

코드 생성을 위해 일련번호를 부여하려 하는데..

주어진 조건이 일자 + seq 입니다.

그런데 seq 가 4자리 밖에 되지 않아 만일의 경우를 대비해 숫자외에 알파벳을 사용하려 합니다.

'0001' ~ '9999' 다음엔 'A000','A001'...'A999' 가 되도록..

이방법이 나을까요? 아니면

'0001' ~ '0009','000A' ~ '000Z','0010'~'0019','001A'~'001Z','0020'~~

이방법이 나을까요?

 

두가지 방법 다 뾰족한 구현방법을 모르겠네요..

고수님들의 빠른답변 기대합니다. ^^

이 글에 대한 댓글이 총 2건 있습니다.

WITH t AS
(
SELECT Null seq FROM dual WHERE 1=2
--UNION ALL SELECT '201310250000' FROM dual
UNION ALL SELECT '201310259999' FROM dual
--UNION ALL SELECT '20131025A123' FROM dual
--UNION ALL SELECT '20131025A999' FROM dual
)
SELECT TO_CHAR(sysdate, 'yyyymmdd')
    || CASE WHEN s = '9999' THEN 'A'
            WHEN SUBSTR(s, 2) = '999' THEN CHR(ASCII(SUBSTR(s, 1, 1)) + 1)
            ELSE SUBSTR(s, 1, 1)
        END
    || LPAD(MOD(SUBSTR(s, 2) + 1, 1000), 3, '0')
    AS new_seq
  FROM (SELECT NVL(SUBSTR(MAX(seq), 9), '0000') s
          FROM t
         WHERE seq LIKE TO_CHAR(sysdate, 'yyyymmdd')||'%'
        )
;

마농(manon94)님이 2013-10-25 08:47에 작성한 댓글입니다.

WITH t AS
(
SELECT Null seq FROM dual WHERE 1=2
UNION ALL SELECT '20131025YYYZ' FROM dual
--UNION ALL SELECT '20131025YYZZ' FROM dual
--UNION ALL SELECT '20131025YZZZ' FROM dual
)
SELECT s, x
     , RPAD(SUBSTR(s, 1, x)
       || REPLACE(CHR(ASCII(SUBSTR(s, x+1, 1))+1), ':', 'A')
       , 4, '0')
  FROM (SELECT s
             , LENGTH(RTRIM(s, 'Z')) - 1 x
          FROM (SELECT NVL(SUBSTR(MAX(seq), 9), '0000') s
                  FROM t
                 WHERE seq LIKE TO_CHAR(sysdate, 'yyyymmdd')||'%'
                )
        )
;

마농(manon94)님이 2013-10-25 10:01에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40294쿼리 튜닝 문의요~~~ [1]
경호선
2013-11-01
7434
40293총기간 일수 계산인데 중복 날짜 제외 도와주세요 [2]
이경남
2013-10-31
8379
40292사용하지 않는 테이블 정리 [1]
이후영
2013-10-30
6237
40290일련번호를 부여하려 합니다. [2]
양충식
2013-10-25
6968
40289clob 타입의 칼럼에서 일치하는 단어만 찾기 , 연관단어 제외 [2]
아롱
2013-10-24
5873
40288query 질문이염...ㅜㅜ [2]
효효효
2013-10-24
6125
40287날짜 계산 질문 드립니다.. [2]
햇살한조각
2013-10-22
6436
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.026초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다