by 바람이불면 [SQL Query] 문장안에서글자찾기 특정문자 위치확인 [2014.10.28 14:35:43]
안녕하세요 늘 도움을 잘받아가는 바람이 불면입니다.
아래와 같은 자료가 있습니다.
1294241787-K10
157149-1571-K100
1275547-22467
맨 마지막 하이픈 뒤에 붙어 있는 숫자가 시리얼 번호인데,
문제는 하이픈이 1개 일수도 있고 3개로 늘어날 수도 있는 상황입니다.
이런 경우 어떻게 쿼리를 만들면 좋을까요?
아.. 제가 DB 버전을 안썼었네요.
9.2.0이어서... 정규식 사용이 불가능했습니다.
with setable as( select '1294241787-K10' as partnumber from dual union all select '157149-1571-K100' from dual union all select '1275547-22467' from dual ) select se.*, to_number(decode(instr(se.partofserial, 'K', 1, 1), 0, se.partofserial , substr(se.partofserial, instr(se.partofserial, 'K', 1, 1) + 1, length(se.partofserial)))) as serial from (select partnumber ,substr(sv.partnumber, (length(sv.partnumber) - instr(sv.partnumber, '-', -1, 1)) * -1) as partofserial from setable sv ) se
위와 같이 정리했네요. 도움 감사합니다.
with setable as( select '1294241787-K10' as partnumber from dual union all select '157149-1571-K100' from dual union all select '1275547-22467' from dual ) SELECT SUBSTR ( partnumber, INSTR ( partnumber, '-', -1 ) + 1 ) , TRANSLATE ( SUBSTR ( partnumber, INSTR ( partnumber, '-', -1 ) + 1 ), ' ABCDEFGHIJKLMNOPQRSTUVWXYZ', ' ' ) FROM setable