안녕하세요 숫자 + 문자 시퀀스 질문드립니다. 0 5 594

by 빠바 [2017.09.18 10:40:57]


현재 ID 룰 쿼리를 만들고있습니다.

그러다 시퀀스 증가에서 막혔는데요

 

일련번호가 01~ZZ 까지 가능하며 I, O 문자는 제외해야합니다.

01 02 03 ....  98 99  AA ... AH AJ( I는 건너뛰어야함)    .... ZX ZY ZZ

 

이런식인데요

숫자 증가시키다가 숫자가 끝나면 문자로 바꿔서 문자 증가를 시키고 그중에 I, 와 O 문자는 그다음 문자로 넘어가려는데 도움을 부탁드립니다.

 

 

 

 

by 김용한 [2017.09.18 10:57:07]

무식하지만 ㅋㅋ

select a.*
  from
(
select lpad(level,2,0) chr from dual connect by level<=99 order by 1
)a
union all
select b.chr
  from (
select achr||bchr chr
  from (
select a.chr achr
      ,b.chr bchr
      ,a.idx aidx
      ,b.idx bidx
  from (
       select chr(level+64) chr, level idx from dual connect by level<=26
       )a
      ,(
       select chr(level+64) chr, level idx from dual connect by level<=26
       )b
  where a.chr not in ('I','O')
    and b.chr not in ('I','O')
)
order by aidx,bidx
)b
;


by 신이만든짝퉁 [2017.09.18 11:00:52]

엇~ 같은 방식이네요 ^^;


by 신이만든짝퉁 [2017.09.18 10:59:34]
SELECT     LPAD(LEVEL, 2, '0')
      FROM DUAL
CONNECT BY LEVEL < 100
UNION ALL
SELECT TXT1 || TXT2
  FROM (SELECT     CHR(64 + LEVEL) TXT1
              FROM DUAL
        CONNECT BY LEVEL < 27)
     , (SELECT     CHR(64 + LEVEL) TXT2
              FROM DUAL
        CONNECT BY LEVEL < 27)
 WHERE TXT1 NOT IN('I', 'O') AND TXT2 NOT IN('I', 'O')

 


by 빠바 [2017.09.18 11:07:32]

감사합니다! 참고하여 작성해볼게요!


by 우리집아찌 [2017.09.18 12:58:52]
SELECT  LPAD(LEVEL,2,'0') RN
  FROM DUAL CONNECT BY LEVEL <= 99

UNION ALL

SELECT * 
  FROM ( SELECT CHR ( 65 + MOD( TRUNC((LEVEL -0.1) / 26 ), 26 ) ) 
             || CHR ( 65 + MOD( LEVEL - 1 , 26 ) ) RN
           FROM DUAL CONNECT BY LEVEL <= ( 26 * 26 )
       )
 WHERE NOT REGEXP_LIKE ( RN, 'O|I')

 

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