ORACLE_DB
Oracle IndexOf
겸둥이곰
2022. 5. 19. 16:59
반응형
가끔 사용하는데 사용할때마가 기억이 안나서.. 메모...
가끔 쿼리를 할때 특정 문자열이 있는 위치를 알고 싶을때가 있다.
그 문자열을 찾은 다음에 그 뒤에 오거나 그 문자열을 포함한 문자열을 자르기 위함이다.
이대 Java에서 사용하는 IndexOf와 같은 Oracle 쿼리에는 INSTR() 함수를 사용하면 된다.
사용법 :
INSTR(문자열, 비교값, [시작위치], [검색결과순번위치])
보통 시작위치, 결과순번은 잘 안쓰고... (나만 그런가?)
INSTR(문자열, 비교값)
이 형태로 많이 사용한다.
SELECT SUBSTR(IN_PARAM, INSTR(IN_PARAM, 'loanreq_seq=') + 12, 14)
FROM TB_FS_HST_FILEDOWN
위 쿼리는 TB_FS_HST_FILEDOWN 테이블의 IN_PARAM 의 필드에서 loanreq_seq= 의 위치를 찾은다음
이때, loanreq_seq=이 위치하는 첫번째 자릿수를 알려준다.
그러니까 loanreq_seq= 를 찾아서 = 뒤에 오는 문자를 가져 오려면.. loanreq_seq=의 길이만큼 더한 위치 부터 찾아야 한다.
loanreq_seq= 는 총 12자리이므로 쿼리에서는 찾는 문자열의 위치에 12를 더하고, 내가 잘라낼 문자의 수만큼 자르기 위해 14를 입력했다.
참고로 문자열의 10번째 자리부터 시작해서 일치하는 2번째를 찾는다면
SELECT SUBSTR(IN_PARAM, INSTR(IN_PARAM, 'loanreq_seq=', 10, 2) + 12, 14)
FROM TB_FS_HST_FILEDOWN
이렇게 하면되겠지..
반응형