예를 들어서 number이라는 컬럼에 201401010123456 이라는 값과 201401015135678 이라는 데이터가 있다고 가정을 하겠습니다.
여기서 뒤에나오는 숫자중 날짜인 20140101 다음 첫숫자 0, 5는 상태를 나타내는 값이라고 보고 많은 데이터 중에서 어떤 것은 0번으로 어떤것은 앞에 5가 온다음 다른 번호가 있다고 가정을 했을때요...
제가 알고 싶은 점은요.. select로 조회를 했을때, substr 함수로 짜를겁니다.. 날짜 부분을요...
그럴때, 앞에 자리수는 같다고 보고 substr을 하게되면 뒤의 값의 경우는 5로 시작하는 숫자일테고(5135678),
앞의 숫자는 (0123456)이렇게 되겠죠....
앞의 숫자가 0으로 시작할때 0을 제외하려면 어떻게 해야 할지 망설이고 있습니다.
제가 알고 싶은 자료는 앞의 숫자는 123456, 뒤의 숫자는 5135678
substr한 다음에 제일 앞 숫자가 0이면 버리고, 5라면 그대로 둬야 한다면... 어떻게 해야 하나요?
이렇게 구하고 싶습니다.. case함수를 써야할지, if 함수를 써야할지 궁금한데요...
고수분들께서 팁을 주셨으면 좋겠습니다... 감사합니다. 즐거운 하루 되십시요...^^
WITH t AS ( SELECT '201401010123456' v FROM dual UNION ALL SELECT '201401015135678' FROM dual ) SELECT v , SUBSTR(v, 9) v0 -- 문자값(좌측 8자리 제거) , LTRIM(SUBSTR(v, 9), '0') v1 -- 문자값(좌측 0 제거) , TO_NUMBER(SUBSTR(v, 9)) n1 -- 숫자값(숫자로 변경) , MOD(v, 10000000) n2 -- 숫자값(10000000 으로 나눈 나머지) , MOD(v, 1E7) n3 -- 숫자값(10^7 으로 나눈 나머지) FROM t ;
마농님 감사합니다.. 조언 주신대로 쿼리를 해보겠습니다.
어떻게 할지 몰라 멘붕이었는데, 덕분에 데이터 처리를 잘 할 수 있을 것 같습니다.
저 죄송한 말씀인데.. 9번째 줄 까지는 무슨 내용인지 이해했는데, 10번째 줄과 11번째 줄의
내용은 왜 필요한지 모르겠는데요... (옆에 코멘트를 달아 주셨지만, 이해가 안됩니다.. ^^;)
mod는 나머지를 구할 때 쓰는 함수로 알고 있는데 , 저는 왜 이부분이 추가되어야 하는지
이해를 못하고 있습니다..
간단하게 왜 저 부분이 들어가야 하는지 설명 부탁드려도 될런지요..
조언 감사드립니다.. 즐거운 하루 되세요...