본문 바로가기
ORACLE_DB

Oracle IndexOf

by 겸둥이곰 2022. 5. 19.
반응형

가끔 사용하는데 사용할때마가 기억이 안나서.. 메모...

 

가끔 쿼리를 할때 특정 문자열이 있는 위치를 알고 싶을때가 있다.

 

그 문자열을 찾은 다음에 그 뒤에 오거나 그 문자열을 포함한 문자열을 자르기 위함이다.

 

이대 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

이렇게 하면되겠지.. 

반응형

'ORACLE_DB' 카테고리의 다른 글

where 조건에 in 으로 1000개 이상의 파라미터 넣기...  (1) 2022.09.30
ORACLE DB LINK  (0) 2022.02.18
오라클(ORACLE) 사용자 잠김 해제..  (0) 2022.01.25

댓글