알파벳 역순 채번을 어떤식으로 해야 될까요?? 0 1 127

by lgxj20 [Oracle 기초] [2017.11.14 17:26:08]


'ZZZZZZZZZZ' 부터 시작해서

'ZZZZZZZZZY'....'ZZZZZZZZZA','ZZZZZZZZYZ'..

이런식으로 10 자리역순으로 채번을 한다면 어떤식으로 해야 되나요?

by 마농 [2017.11.14 19:27:00]
WITH t AS
(
SELECT '' seq FROM dual
UNION ALL SELECT 'ZZZZZZZZZZ' FROM dual
UNION ALL SELECT 'ZZZZZZZZZM' FROM dual
--UNION ALL SELECT 'ZZZZZZZZZA' FROM dual
--UNION ALL SELECT 'ZZZZZZZZYZ' FROM dual
--UNION ALL SELECT 'ZZZZZZZZYA' FROM dual
--UNION ALL SELECT 'ZZZZZZZAAA' FROM dual
--UNION ALL SELECT 'AAAAAAAAAA' FROM dual
)
SELECT seq current_seq
     , CASE WHEN seq IS NULL THEN 'ZZZZZZZZZZ'
            WHEN v = 10 THEN 'Sequnce Overflow Error'
            ELSE SUBSTR(seq, 1, 10 - v - 1)
              || CHR(ASCII(SUBSTR(seq, 10 - v, 1)) - 1)
              || LPAD('Z', v, 'Z')
        END next_seq
  FROM (SELECT MIN(seq) seq
             , NVL(LENGTH(REGEXP_SUBSTR(MIN(seq), 'A+$')), 0) v
          FROM t
        )
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입