INSTR Functicon
INSTR( string, substring [, start_position [, th_appearance ] ] )
문자열 위치를 반환해주는 함수입니다.
사용 가능한 버전
Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i
매개변수
string
- 문자열입니다.
- CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, NCLOB 타입 사용 가능합니다.
substring
- 검색 할려는 문자열입니다.
- 타입은 string과 동일합니다.
start_position
- string 문자열에서 검색을 시작할 위치입니다.
- 생략할 경우 기본 값은 1입니다.
- (-)음수일 경우 뒤에서 검색합니다.
th_appearance
- 검색한 결과의 순번입니다.
- 생략할 경우 기본 값은 1입니다.
특징
- 숫자 값을 반환합니다.
- 문자열의 첫 번째 위치는 1입니다.
- 문자열의 위치를 못 찾을 경우 0을 리턴합니다.
EX 1)
- 3번째 4번째 파라메타 생략하고 ',' 문자열 검색
SELECT INSTR(', A, B, C, D, E,', ',') AS SEARCH_CHAR
FROM DUAL;
EX 2)
- 4번째 파라메타 생략하고 시작 위치를 2로 하고 ',' 문자열 검색
- 4번째 파라메타 생략하고 뒤에서 ',' 문자열 검색
SELECT INSTR(', A, B, C, D, E,', ',', 2) AS FIRST_CHAR
, INSTR(', A, B, C, D, E,', ',', -1) AS END_CHAR
FROM DUAL;
EX 3)
- 첫 번째 위치에서 ',' 문자열 검색 후 2 번째 순번의 위치
- 뒤에서 ',' 문자열 검색 후 2 번째 순번의 위치
SELECT INSTR(', A, B, C, D, E,', ',', 1, 2) AS FIRST_CHAR
, INSTR(', A, B, C, D, E,', ',', -1, 2) AS END_CHAR
FROM DUAL;
응용 EX 1)
- 첫 번째 위치의 ',' 이후의 문자열 부터 마지막 문자까지 출력
SELECT SUBSTR(', A, B, C, D, E,', INSTR(', A, B, C, D, E,', ',', 1, 1) + 1, LENGTH(', A, B, C, D, E,')) AS STR1
, SUBSTR(', A, B, C, D, E,', 2, LENGTH(', A, B, C, D, E,')) AS STR2
FROM DUAL;
두 컬럼의 결과 값은 동일하나 차이점이 존재합니다.
첫 번째 컬럼의 경우에는 ','의 첫 번째 위치를 모르므로 INSTR Function을 사용하여 첫 번째 위치의 ','를 찾아야합니다.
두 번째 컬럼의 경우에는 ','의 첫 번째 위치를 알고 있다는 가정하에 사용합니다.
응용 EX 2)
- 처음 위치부터 마지막 위치의 ',' 앞까지 문자열 출력
SELECT SUBSTR(', A, B, C, D, E,', 1, LENGTH(', A, B, C, D, E,') - 1) AS STR1
, SUBSTR(', A, B, C, D, E,', 1, INSTR(', A, B, C, D, E,', ',', -1, 1) - 1) AS STR2
FROM DUAL;
응용 EX 1) 과 동일한 방법입니다.
SUBSTR Function의 두 번째 매개변수는 처음 위치는 무조건 1이므로 1로 고정값으로 설정합니다.
첫 번째 컬럼의 경우에는 마지막 위치에 ','가 존재한다는 것을 알고 있다는 가정하에 사용합니다.
두 번째 컬럼의 경우에는 마지막 위치의 ','를 모르므로 INSTR Function을 사용하여 마지막 위치의 ','를 찾아야합니다.
'DataBase > Oracle' 카테고리의 다른 글
[ORACLE]반올림하는 ROUND 함수 (0) | 2021.05.16 |
---|---|
[ORACLE]소수점, 날짜 자르는 TRUNC 함수 (0) | 2021.05.16 |
[ORACLE]지정한 범위에서의 위치를 구하는 WIDTH_BUCKET함수 (0) | 2021.05.09 |
[ORACLE]올림 처리하는 CEIL 함수 (0) | 2021.05.09 |
[ORACLE]문자열 합치기 (CONCAT, ||) (0) | 2021.05.08 |
댓글