decode와 substr관련입니다.. 0 4 2,489

by 여비몬 [2013.02.19 08:57:00]



어제 마농님이 알려주신 코딩입니다.
그런데 혹시 그룹식으로 조/억/만
이런식으로 decode를 짤수있나요?
substr가 들어가니까 애매해서 어제부터 고민고민하다 못했네요ㅠㅠ
그냥 궁금해서 여쭤봅니다..하하 하다보니 욕심이란게 생기네요
도와주신 마농님께 감사할따름입니다

 (  SUBSTR(V,  1, 1)||DECODE(SUBSTR(V,  1, 1),'0','','천')
    || SUBSTR(V,  2, 1)||DECODE(SUBSTR(V,  2, 1),'0','','백')
    || SUBSTR(V,  3, 1)||DECODE(SUBSTR(V,  3, 1),'0','','십')
    || SUBSTR(V,  4, 1)||DECODE(SUBSTR(V,  1, 4),'0','','조')
    || SUBSTR(V,  5, 1)||DECODE(SUBSTR(V,  5, 1),'0','','천')
    || SUBSTR(V,  6, 1)||DECODE(SUBSTR(V,  6, 1),'0','','백')
    || SUBSTR(V,  7, 1)||DECODE(SUBSTR(V,  7, 1),'0','','십')
    || SUBSTR(V,  8, 1)||DECODE(SUBSTR(V,  5, 4),'0','','억')
    || SUBSTR(V,  9, 1)||DECODE(SUBSTR(V,  9, 1),'0','','천')
    || SUBSTR(V, 10, 1)||DECODE(SUBSTR(V, 10, 1),'0','','백')
    || SUBSTR(V, 11, 1)||DECODE(SUBSTR(V, 11, 1),'0','','십')
    || SUBSTR(V, 12, 1)||DECODE(SUBSTR(V,  9, 4),'0','','만')
    || SUBSTR(V, 13, 1)||DECODE(SUBSTR(V, 13, 1),'0','','천')
    || SUBSTR(V, 14, 1)||DECODE(SUBSTR(V, 14, 1),'0','','백')
    || SUBSTR(V, 15, 1)||DECODE(SUBSTR(V, 15, 1),'0','','십')
    || SUBSTR(V, 16, 1)
    , '1234567890', '일이삼사오육칠팔구') || '원' V
by 마농 [2013.02.19 09:47:09]

질문은 뭔말인지 모르겠구요.
먼저 이해부터 하고 응용하셔야 하는데.
이해가 안되는 상태에서 응용부터 하려고 하시는것 같아요.
그래서 질문도 두서없는것 같구요.
알려드린 쿼리와 다른 쿼리를 올리셨네요?
저는 줄맞춤을 해서 보기 좋게 하려고 0 에 따옴표를 일부러 뺐는데요.
위와 같이 따옴표 붙이실거면 조억만이 들어가는 곳은 '0000' 이 되어야 맞습니다.
그냥 '0' 하시면 틀린 결과가 나옵니다.
이부분만 봐도 아직 이해가 부족하단걸 알수가 있네요.


by 여비몬 [2013.02.19 09:49:17]

그부분은 제가 실행해본결과 0이 문자로된상태라고 오류가떠서 따옴표를 붙였습니다;;
음 그걸이해못했네요..


by 마농 [2013.02.19 10:56:05]

4자리씩 반복되는 구조이지요.
4자리씩 끊어서 조억만이 붙게 되구요.
따라서 반복되는 4자리씩을 끊어서 행을 생성하고
즉, 1행의 자료가 4행으로 늘어나게 되겠지요.
그다음 4자리 숫자에 공통룰(천백십)을 적용한뒤
각 행번호에 따라 조억만을 구별하여 붙여주고
이렇게 한후 다시 4행의 자료를 1행으로 합치면 되겠지요.
행복제 > 자료처리 > 행합치기 과정을 거치게 됩니다.
이런 복잡한 과정을 거치는 것보다는,
귀찮더라도 그냥 Substr 몇 번 더 쓰는게 성능상 낫습니다.


by 여비몬 [2013.02.19 11:17:45]

제가 0을 이해못했던것같습니다 죄송하고 감사합니다ㅠㅠ
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입